プライバシーポリシー
広告について
当サイトは第三者配信の広告サービス「Google Adsense グーグルアドセンス」を利用しています。
Googleを含む広告配信事業者は、Cookie を使用して、ユーザーがそのウェブサイトや他のウェブサイトに過去にアクセスした際の情報に基づいて広告を配信しています。
この目的は、ユーザーがそのサイトや他のサイトにアクセスした際の情報に基づいて、Google やそのパートナーが適切な広告をユーザーに表示するためです。
Cookie(クッキー)を無効にする設定およびGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご覧ください。
パーソナライズ広告を無効にする手続きは「広告設定ーGoogle」からお手続きください。
なお、パーソナライズ広告に使われる第三者配信事業者の Cookie を無効にする手続きは「www.aboutads.info」からできます。
個人情報の第三者への開示・提供の禁止
当社は、お客さまよりお預かりした個人情報を適切に管理し、次のいずれかに該当する場合を除き、個人情報を第三者に開示いたしません。
・お客さまの同意がある場合
・お客さまが希望されるサービスを行なうために当社が業務を委託する業者に対して開示する場合
・法令に基づき開示することが必要である場合
当サイトへのコメントについて
当サイトでは、コメントの際に使用されたIPアドレスを記録しています。
これはブログの標準機能としてサポートされている機能で、スパム・荒らしへの対応以外にこのIPアドレスを使用することはありません。
全てのコメントは管理人が事前にその内容を確認し、承認した上での掲載となりますことをあらかじめご了承下さい。加えて、次の各号に掲げる内容を含むコメントは管理人の裁量によって承認せず、削除する事があります。
・特定の自然人または法人を誹謗し、中傷するもの。
・極度にわいせつな内容を含むもの。
・禁制品の取引に関するものや、他者を害する行為の依頼など、法律によって禁止されている物品、行為の依頼や斡旋などに関するもの。
・その他、公序良俗に反し、または管理人によって承認すべきでないと認められるもの。
お問い合わせについて
お問い合わせを頂く際、お名前とメールアドレスを入力して頂きます。
これはお問い合わせに対して返信をさせて頂くためのもので、この目的以外に用いることはありません。
免責事項
当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。
サービスの利用・商品の購入に関してましては、自己責任でお願いします。
当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤った情報の場合や、情報が古くなっていることもございます。
当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。
著作権について
当サイトに掲載している、文章・画像・動画等の著作権は当サイトに帰属します。これらの情報を無断転載することを禁止します。
Laravelでルートパラメーターを使ってみる
コマンドでコントローラーを生成する
PHPコンテナの中に入る
docker compose exec app bash
コマンドでコントローラーを生成する
コマンドが正常に終了すると、Helloコントローラーが生成されています。
中身は何もありませんので、これから追加していきます。
コントローラーを修正する
先ほど作ったコントローラーにアクションメソッドを追加します。
アクションメソッドの引数でルートパラメーターを受け取ります。
public function index($lang){
echo($lang);
}
ルーティングの設定をする
コントローラーを使うためには、URLとコントローラーを紐づける必要があります。
routesフォルダにあるweb.phpに紐づけ情報を追加していきます。
Route::get('/route-param/{lang}', 'RouteParamTestController@index');
URLのパラメーターの部分を{ }で囲ってあげます。
変数名はアクションメソッドと同じにする必要があります。
ブラウザで確認する
http://localhost:8080/route-param/php
phpがルートパラメーターの部分になります。
phpという値が受け渡されて、画面に表示されていることが確認できます。
ルートパラメーターをjavaに変えてみました。
http://localhost:8080/route-param/java
複数のルートパラメーターを使用する
ルートパラメーターは同時にいくつでも使うことができます。
ルーティングを変更する
web.phpを以下のように変更します。
Route::get('/route-param/{lang1}/{lang2}', 'RouteParamTestController@index');
コントローラーを変更する
先ほど作ったアクションメソッドを以下に書き換えます。
public function index($lang1, $lang2)
{
echo($lang1);
echo("<br>");
echo($lang2);
}
ブラウザで確認する
http://localhost:8080/route-param/php/java
2つのルートパラメーターがコントローラーに受け渡されて、画面に表示されていることが確認できました。
任意項目のルートパラメーターを使ってみる
今までは必須項目でしたが、任意項目も設定できます。
ルーティングを変更する
web.phpを以下のように変更します。
Route::get('/route-param/{lang1}/{lang2}/{lang3?}', 'RouteParamTestController@index');
第3ルートパラメーターは末尾に?をつけています。
これが任意項目という意味になります。
コントローラーを変更する
アクションメソッドを以下のように修正します。
第3引数は任意項目のため、値が渡されない時があります。
ということで、デフォルト値を設定してあげます。
public function index($lang1, $lang2, $lang3 = "なし")
{
echo($lang1);
echo("<br>");
echo($lang2);
echo("<br>");
echo($lang3);
}
ブラウザで確認する
まずは任意項目である第3引数が設定されているパターンです
http://localhost:8080/route-param/php/java/vba
今まで通り、第3引数も画面に表示されました。
今度は任意項目である第3引数を省略すると、デフォルト値として設定した「なし」が表示されます。
http://localhost:8080/route-param/php
以上です。
お疲れ様でした。
VS CodeにPHPコーディング基準のphpcsを導入する
仕事でコーディングをしていると、プロジェクトごとにコーディング基準というのがあります。
コーディング基準に従って書くと、品質の安定や保守性の向上につながります。
今回はPHPコーディング基準として使えるVS Codeのプラグイン「phpcs」の導入を紹介します。
↓こちら↓の記事を参考にしました。
- Homebrewをインストールする
- Homebrewがインストールできたか確認する
- PHPをインストールする
- Composerをインストールする
- phpcsライブラリをインストールする
- VScodeエクステンションのphpcsをインストールする
- phpcsを適用する
Homebrewをインストールする
Homebrewがインストールされている確認する
下記コマンドを実行します。
brew -v
not foundが返ってきたら、まだインストールされていないので、手順を順番通りに実施していきます。
バージョンが返ってきたら、すでにインストールされていますので、次のPHPのインストールに進みましょう。
Homebrewをインストールする
公式ホームページにアクセスして、ページ中央にあるコマンドをコピーして実行します。
公式ページに書いてあるコマンドは↓ですので、こちらをコピーして実行しても大丈夫です。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
途中、パスワードを聞かれますので、Macにログインするときのパスワードを入力します。
私は2回聞かれました。
Homebrewがインストールできたか確認する
Homebrew 3.5.3
バージョンが返ってきたらインストール成功です。
Homebrew/homebrew-core (git revision 6b633976bb8; last commit 2022-07-02)
PHPをインストールする
コンテナの中にPHPをインストールして使っていますが、今回はMac自体にインストールしていきます。
PHPがインストールされている確認する
php -v
not foundが返ってきたら、まだインストールされていないので、手順を順番通りに実施していきます。
バージョンが返ってきたら、すでにインストールされていますので、次のComposerのインストールに進みましょう。
PHPをインストールする
PHPがインストールできたか確認する
php -v
バージョンが返ってきたらインストール成功です。
PHP 8.1.7 (cli) (built: Jun 9 2022 14:21:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.7, Copyright (c) Zend Technologies
with Zend OPcache v8.1.7, Copyright (c), by Zend Technologies
odaneko@odanekonoMacBook-Air ~ % clear
Composerをインストールする
Composerがインストールされている確認する
composer --version
not foundが返ってきたら、まだインストールされていないので、手順を順番通りに実施していきます。
zsh: command not found: composer
バージョンが返ってきたら、すでにインストールされていますので、次のphpcsのインストールに進みましょう。
Composerをインストールする
brew install composer
ん?なんかエラーっぽいメッセージが出ていますね・・・。
Homebrewがインストールできたか確認する①
インストール確認の方法は2つあります。
せっかくなので、両方やります。
composer --version
バージョンが返ってきたらインストール成功です。
Composer version 2.3.8 2022-07-01 12:10:47
エラーっぽいメッセージが出ていましたが、大丈夫なようです。
Homebrewがインストールできたか確認する②
composer
かっこよくComposerと出てきますね。
phpcsライブラリをインストールする
ここからはプロジェクトごとの実施になるので、VS Codeで実施します。
composer require --dev "squizlabs/php_codesniffer=3.*"
VScodeエクステンションのphpcsをインストールする
なぜか2つ出てきますが、上は△マークがついていたので、とりあえず2つ目にしておきました。
phpcsを適用する
設定ファイルを開く
phpcsを適用する
jsonファイルに下記を追記します。
"phpcs.standard": "PSR12"
VS Codeを再起動して、phpcsが適用されていることを確認する
コーディング基準に違反しているところがあると、赤い数字や下線が表示されます。
以上です。
お疲れさまでした。
Laravelのコントローラーを使う
Laravelのコントローラーを使ってみます。
コントローラーはURLに応じてどの処理をするかをコントロールする部分になります。
画面と処理の間に位置し、両方をコントロールします。
習うより慣れよう、とりあえずやってみます。
コマンドでコントローラーを生成する
PHPコンテナの中に入る
docker compose exec app bash
コマンドでコントローラーを生成する
コマンドが正常に終了すると、Helloコントローラーが生成されています。
中身は何もありませんので、これから追加していきます。
コントローラーを修正する
先ほど作ったコントローラーにメソッドを追加していきます。
よくあるHello Worldを作ります。
public function index(){
echo("Hello World.");
}
ルーティングの設定をする
コントローラーを使うためには、URLとコントローラーを紐づける必要があります。
routesフォルダにあるweb.phpに紐づけ情報を追加していきます。
Route::get('/hello', 'HelloController@index');
「クラス名@メソッド名」で呼び出す処理を記載していきます。
ブラウザで確認する
Target class [HelloController] does not exist.
クラスが存在しないと言われました・・・。
ちょっと調査が必要ですね。
トラブルシューティング
少し調べたらすぐに答えが見つかりました。
どういう理由かわかりませんが、Laravel8以降はRouteServiceProvider.phpに必要なコードがなくなっているようで、エラーが出るようになっています。
ということで、手動でLaravel7までの状態を再現してあげます。
プロパティ部分に下記を追記します。
protected $namespace = 'App\Http\Controllers';
あと、bootメソッドのapiとwebのルートに下記を追記します。
->namespace($this->namespace)
もう一度ブラウザで確認する
今度はうまく表示されました。
以上です。
今回は画面と処理の中間に位置するコントローラーの使い方でした。
お疲れ様でした。