PHP関連のことを調べてみた2020年05月02日

PHP関連のことを調べてみた2020年05月02日

一口メモ – PHPできれいに短くコードを書く方法 (switch編)

switch文で書かれた長たらしいswitch文のコードを短く書き直してみる。

## PHPのバージョン
* PHP 7.1.2

## 使用するやつ
* ??を使った三項演算子(null合体演算子)
* 連想配列

※ これらはあらかじめ使い方を知っておいて下さい。

## 実践
それぞれのHTTPステータスコードに対応するメッセージを表示させたい場合、通常ならばswitch文で書く人が多い(という根拠の無い推測)

“`php

元記事を表示

EC-CUBE4 独自プラグイン開発 ③今後も使えそうなTips

# 概要
独自プラグインの開発を通して学んだことをまとめました。
別の記事として書いた場合もあります。タイトルにピンときたら読んでみてください。

# 目次
[EC-CUBE4 独自プラグイン開発 ①環境構築手順](https://qiita.com/haruna-nagayoshi/items/948b196cf4f5186641e9)
[EC-CUBE4 独自プラグイン開発 ②独自プラグイン開発Tips](https://qiita.com/haruna-nagayoshi/items/27108c75eaf9511f3524)
EC-CUBE4 独自プラグイン開発 ③今後も使えそうなTips、考えたこと (本記事)

# 今後も使えそうなTips
## .gitkeepと.gitignoreの違いと使い分け
[空のディレクトリを維持するための、 .gitkeep と .gitignore の使い分け](https://qiita.com/ndxbn/items/f124d2b183b60cb074e2)
PhpStormを使う都合上`.gitignore`はよく使うけど、`git

元記事を表示

PHP foreachを使う

#foreachを使う
###foreachとは
配列の値を複数表示させる時に使います。

“`php
$members = [
‘name’ => ‘鈴木’,
‘height’ => 172,
‘hobby’ => ‘野球’
];
foreach($members as $member){
echo $member;
}
“`
説明すると、`$members`という連想配列があったとして、`foreach`の`($members as $member)`とありますが、これは`$members`を`$member`という変数で展開するという事です。従って、変数`$member`は`$value`等配列に関係性のあるものの名前にすると分かりやすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629307/0bb6b9c9-dcd3-1126-2db2-15041f745a59.png)
ブラウザで見るとこのように表示されます。`$members`のバリューが表

元記事を表示

PHP Laravel 基礎

#前提
Laravelでアプリを作っていた時に学んだことを殴り書きしていきます。

#本題

ミドルウェアとは
アプリケーションへ送信されたHTTPリクエストをフィルタリングする、便利なメカニズムを提供してくれるもの。
ブラウザ経由で来たリクエストをコントローラーに処理が行く前に何らかの処理を追加できる機能。
ログイン認証のミドルウェア。

storeメソッド
Laravelでは慣習的にstoreメソッドはデータをデータベースへ挿入する際、よく使われるメソッド名です。

insertメソッド
insertメソッドはデータベースに新しいレコード(行)を追加するメソッド。

アップロードした画像はハッシュ名(ランダムな名前)で保存したいため、どのレビューとどの画像が紐付くのかをデータベースに保存しておく必要がある。
ハッシュ名で画像を保存する理由としては、セキュリティのため。
わかりやすい名前で保存してしまうと直接URLにアクセスされてしまう等のセキュリティリスクが上がるため、ランダムな名前で保存する。

論理削除
論理削除とは実際にはデータを削除せずに、削除されたと見なすフラッグと呼

元記事を表示

さくらレンタルサーバーでCRON制限無くなるようにする方法?

### 目的
さくらレンタルサーバーでCRON制限無くなるようにするために作ったものです。
スタンダードの場合、5つしか登録できない(´・ω・`)ので
それを回避するためにコードを書きました。
まだ、テスト段階です。

![2020-05-01_1919.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/66081/c9502c3d-b226-4ccf-2970-3930ae5adafc.png)

CRON設定は上記のような設定にする。

### 注意事項
1. 外部から実行ファイルを叩かれないように設定するように
2. PHP7推奨
3. プログラムを見て解釈してください
4. 5分刻みのクローン設定にしか有効性がないです。
5. カンマ区切りの際に月や日に0を入れないように?

### 実行コマンドの例 こんな感じ

“`
command”:”cd /home/user/www/user_dir/site/; /usr/local/bin/php cron.php “cron.json”
“`

元記事を表示

Advanced Custom Fields の関連記事を選択する際の並び順を変更

WordPress で開発する時にあったら大変捗るプラグインといえば Advanced Custom Fields です。
その中のフィールドの一つである「関連」フィールドの Tips をご紹介します。

## 関連フィールドとは

Relationship


作成済みの記事やページ(カスタム投稿も可能)を選択できる機能を提供してくれます。ある記事に対して手動で関連記事を設定して有用なサイト内回遊を促したり、固定ページで特定の記事を表示させたい場合などに大変便利です。

### 選択可能な記事の表示順を変更する
ただこの記事選択をする時のUI上の記事の並び順がタイトルのアイウエオ順となっており、キーワード検索を前提とした場合は良いと思うのですが、基本的に最新の記事から記事を選択したい場合などでは不便なので、公開日時の新しい順に並び替えたいと思います。

Screen Shot 2020-05-01 at 18.35.14.pngPHP 条件分岐if文編

#条件分岐とは
条件分岐とは、「変数や値との比較の結果によって、文を実行する、あるいはしない」というもの

##if文について
条件が満たされていれば処理を実行するという構文です。基本的には下記のように記述します。

“`php
if文
if (条件){
条件が真なら実行
}
“`
例文はこんな感じです。

“`php
$color = ‘red’;

if ($color === ‘red’) {
echo ‘colorは赤です’;
}
“`
`$color`という変数が`’red’`ならば`’colorは赤です’`と表示されます。上記では条件が満たされているので`’colorは赤です’`が表示されると思います。

If文には条件を満たさない場合の処理も実行させる事ができます。
###elseを使う
記述は以下の通りです。

“`php
if (条件){
条件が真なら実行
} else {
条件が偽なら実行
}

“`

例文は下記の通りです。

“`php
$number = 33;

if ($number === 33){
echo ‘正解です

元記事を表示

PHP ログイン・ログアウト機能

##フルスクラッチPHPでのログイン機能のやり方

DBとの連携でのシンプルなログイン、ログアウト
事前にMySQlにユーザー名とログイン用のメールアドレスとパスワードは登録済み
セキュリティー対策は無し

“`php:login_form.php





ログイン入力

ログインページ

ようこそ

さん

ログアウト

PHPのエスケープシーケンス一覧

#エスケープシーケンスとは
画面上に文字を出力する際に、文字そのものを出力するのではなく、文字色の変更やカーソルの移動、文字の消去など、文字出力の制御を行う特殊な文字列のこと。

以下のようなCaseで使う

“`php:sample.php
>Parse error: syntax error, unexpected ‘s’ (T_STRING), expecting ‘;’ or ‘,’ in /home/dotinstall/main.php on line 5
“`

エスケープシーケンスを使うとシングルクォーテーションがエラーなく表示されるようになる

“`php:sample.php

元記事を表示

PHPの配列、連想配列について

#PHPの配列
###配列とは
配列とは、同じ変数名で、いくつかデータを入れることができる大きな箱のようなものです。配列の場合は、一つの配列に複数の箱で振り分けることができます。

基本的な使い方としては以下のような書き方をする。

こうするとブラウザには”2”が出力される。

“`php
$array_1 = [1,2,3];//変数=[値]
echo $array_1[1];
“`
配列は行をふやす事もできる

“`php
$array_2 = [
[‘赤’,’青’,’黄’],
[‘test’,’numbers’,’baseball’]
];
“`
これは$array_2と言う配列の中に更に「赤、青、黄」の配列と「test,numbers,baseball」があることを示している。値の取り出し方は下記の通りで、[0][1]の[0]は1列目「赤、青、黄」を指定し,[1]はその配列の中の何番目かを指定している。この場合では”青”が表示される。

“`php
echo $array_2[0][1];
“`
#連想配列
###連想配列とは
配列には、変数の箱の中身

元記事を表示

PHPの基本操作をまとめ書きする

##出力に使うecho
“`main.php
>Hello tanaka
“`
##改行に使う.PHP_EOL

“`main.php
>Hello tanaka
>>Hi tanaka
“`

##コメントにする // , # , /**/
“`main.php
>Hello tanaka
//変数は文字列に入れ込むことができる
echo “It’s Sunday. Hello $name” . PHP_EOL;
>>It’s Sunday. Hello tanaka
“`
##シングルクォーテーション、ダブルクォ

元記事を表示

EC-CUBE4 独自プラグイン開発 ①Dockerで環境構築 + xdebug導入

# 概要
EC-CUBE4で独自プラグインを開発することになった。
プロジェクトの最初から最後まで関わるのは初めてなので、あとで自分が振り返るために考えたことや試したことをどこかに記録しておこうと思った。
あと、忘れても問題ない状況を作って早く忘れてしまいたい。

本記事では、Dockerで開発環境を構築する手順を書く。内容は、他のメンバーに共有するために仕事中に調べてまとめたものを加筆・修正しただけ。
環境構築は、[EC-CUBE 4.0 開発者向けドキュメント](https://doc4.ec-cube.net/)の通り進めれば簡単に終わる。

# 目次
EC-CUBE4 独自プラグイン開発 ①環境構築手順 (本記事)
[EC-CUBE4 独自プラグイン開発 ②独自プラグイン開発Tips](https://qiita.com/haruna-nagayoshi/items/27108c75eaf9511f3524)
[EC-CUBE4 独自プラグイン開発 ③今後も使えそうなTips](https://qiita.com/haruna-nagayoshi/items/3527ee12c

元記事を表示

今更ながらPHPでスクレイピングしてみた

###概要
LineBot作るためにPHPで初めてスクレイピングしたのでPHPでスクレイピングしたお話

『PHP スクレイピング』でgoogle様に聞くとPHPQueryというのを使うと簡単にスクレイピングができるらしいのでPHPQueryを使っていきます。

>参考サイト
https://qiita.com/nadonado/items/0ac037d90c5248b7eac3

###今回の目標
今回は送られてきた英単語に対してその英単語の例文を返すBotを作るので、英ナビ( https://www.ei-navi.jp/ )から例文を取得するpログラムを組みます。

###PHPQueryの設置
PHPQueryの公式サイト( https://code.google.com/archive/p/phpquery/downloads )
一番上のZipfailをダウンロード

zipファイルを解凍

![スクリーンショット 2020-04-30 14.57.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

吉田さんは通すけど?田さんは通さないミドルウェア

# 元ネタ

`utf8` から `utf8mb4` に早く乗り換えたいけどいろいろとレガシーアプリケーションには事情があるんじゃ!!!

# 実装

?田さんが会員登録しようとすると 400 Bad Request を返します。エラーメッセージはできるだけ親

元記事を表示

MAMP(FREE)のインストールから表示まで(MAC )

#MAMPとは
MAMP(マンプ)とは、ローカル開発環境に必要なソフトウェア(Apache、MySQL、PHP)をパッケージ化したもので、macOS、Windows上で動作させることが出来る。
「Macintosh」「Apache」「MySQL」「PHP」の頭文字をとってMAMPと名付けられている。

#MAMPのインストール

MAMPの公式サイトよりダウンロード(https://www.mamp.info/en/)
FREE Downloadをクリック
![MAMP1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629307/cb21cfd4-6775-619b-fdef-1f9c0e38945d.jpeg)
MAMP & MAMPPRO5.7をクリック
![MAMP2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629307/c1db7655-21e6-0df0-7184-0aa477db1074.png)

元記事を表示

「破壊的メソッド」はRuby用語なのか?

昨日、「[データサイエンティストが知るべき破壊的メソッドのすべて](https://qiita.com/ninomiyt/items/2e3fb2569427312f28cc)」という記事を書いたのですが、友人から次のような意見を貰いました。

> 微妙に気になったけど、「破壊的メソッド」「非破壊的メソッド」ってプログラミング全般でなくRuby用語で、かつ、「レシーバを変更するメソッド」っていう意味じゃない?
> もしあえて名前で呼ぶなら、inplace methodが正しそう。(日本語は見つからない)
> https://discuss.pytorch.org/t/what-is-in-place-operation/16244
> https://ja.wikipedia.org/wiki/In-placeアルゴリズム

更に、例えばpandasでも[inplaceという引数名が使われている](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html)ので、データサ

元記事を表示

Amazon PA-API が v5になって使えなくなったから、スクレイピングして強引にデーターを持ってくるVBAを作った話

## 初めに

**amazonPA-API**と**楽天ブックス書籍検索API**に書籍やCD、DVDの情報を取りに行き、記事の文末にアフィリエイトのリンクを貼るためのHTMLを生成するツールをPHPで作っていました。

ツールの仕様は、本の見出しやISBN-10で検索し、amazonのAPIから必要な情報を取得した後に、ISBNを持って楽天APIに行って、楽天からも書籍データーを取得します。それを規定のHTMLの指定の場所に挿入して、1つのHTMLの塊として書き出し、それをコピペして使うというものです。

商品画像や本のタイトル、著者情報や価格はAmazonから引用したもので、それらをクリックするとAmazonの商品ページにジャンプし、楽天ショッピング用のボタンもあり、それを押すと、楽天の該当商品の画面にジャンプします。

## ツールが動かないとの連絡
2020年3月中旬に、このツールが動かなくなったと各部署から連絡があり、調べるとAmazon PA-APIがv5にバージョンアップしていて、 `PA-API v5への移行を2020年3月9日までに実施しなかった場合、現在のPA-A

元記事を表示

PHP 正規表現

#前提
PHPにおける正規表現について記述していきます。

#本題

行頭にマッチする

“`
^
#例:^hello。行頭にhelloの文字列はこのパターンにマッチする。
“`

行末にマッチする

“`
$
#例:hello$。行末にhelloの文字列はこのパターンにマッチする。
“`

改行以外の任意の1文字にマッチする

“`
.
#例:1、hello.world。hello worldやhello-worldなどの文字列はこのパターンにマッチする。
“`

英大文字A-Zの任意1文字にマッチする

“`
[A-Z]
#例:1、a[A-Z]c。aAc,aBc,…,aZcなどの文字列はこのパターンにマッチする。
“`

英小文字a-zの任意1文字にマッチする

“`
[a-z]
#例:1、a[a-z]c。aac,abc,…,azcなどの文字列はこのパターンにマッチする。
“`

数字0-9の任意1文字にマッチする

“`
[0-9]
#例:1、a[0-9]c。a0c,a1c,…,a9cなどの文字列はこのパターンにマッチする。
“`

角括弧内に含

元記事を表示

Laravelのルーティング基本

#web.php
routes\web.php
ルーティングに関する情報の記載。

記入内容
・アドレス指定
・コントローラを指定
・コントローラのメソッドを指定

#コントローラ
Http\Controllers\コントローラ名

“`php

php artisan make::controller コントローラ名
“`

で作成する。
作成されたコントローラは、Http\Controllers\コントローラ名 に作成される。

useでrequrestやresponseやフォームリクエスト等のクラスをインポートし、メソッドの引数で読み込むことで利用可能にする。

“`php
return view(‘テンプレートフォルダ名’, 渡す値);
“`

この第1引数に読み込むテンプレートフォルダ名を記入。helloフォルダのindexファイルの場合は、hello.indexと記入する。
第2引数の値は、配列。この値をテンプレートに渡す。

#Bladeテンプレート
resourdes\views\フォルダ名.blade.php

{{$変数名}}で、コントローラ等から渡された

元記事を表示

[WIP] ヘルパ DI クラス一覧

以下は全ヘルパと実際のクラスまたは代替の一覧です。

### 配列とオブジェクト

| helper | class | method |
| — | — | — |
| Arr::* | Illuminate\Support\Arr | * |
| [data_fill](https://github.com/laravel/framework/blob/6.x/src/Illuminate/Support/helpers.php#L122) | Illuminate\Support\Arr | add ※1 |
| [data_get](https://github.com/laravel/framework/blob/6.x/src/Illuminate/Support/helpers.php#L137) | Illuminate\Support\Arr | get ※1 |
| [data_set](https://github.com/laravel/framework/blob/6.x/src/Illuminate/Support/helpers.php#L

元記事を表示

OTHERカテゴリの最新記事