目次
はじめに
Laravelで今まで触れてこなかった機能などに関して深堀してみました。
目的
Laravelの理解を深めて、ポートフォリオ制作に活かす。
Laravelの機能を深堀りしてみた
1.サービス
①サービスコンテナ
クラス依存解決(インスタンス管理)のための仕組み。
インスタンス生成に必要な情報を管理し、生成操作が可能なクラスにしてくれる。
newではなく引数にすることで依存度が下がる。
※コントローラやモデルもクラス。
※メソッドインジェクション:クラスの引数で必要とするインスタンスを渡す方法。
②サービスプロバイダ
どのクラスをインスタンス化するか決定する。
フレームワークやアプリに含まれるサービス(機能)の初期処理を行う目的で用意されている。※ミドルウェアより先!!
ここでのBootstrapは「自動・自給の」「自動実行する」といった意味の英語です。
※「サービスプロバイダとはLaravelアプリケーション内の全てのserviceがbootstrapされる場所である」 引用:公式を訳してくれているこちらの記事
③ファサード
クラスメソッド形式でFWの機能を簡単に利用できるもの。DIが使われている。
裏側でサービスコンテナの機能が使われているため、サービスコンテナ(DI)やプロバイダーの理解が必須。
※プロバイダはサービスをシステムで組み込み、ファサードはサービスを利用するためのクラスを提供する。
例)
①Routeファサード
②マイグレーションファイルで利用するSchemeファサード
③DBファサード
※DBファサードのtableメソッド。引数で指定したテーブルからデータを取得。
$query = DB::table('posts');
④認可機能を追加するGateファサード
⑤機能拡張に役立てるEventファサード
⑥コンソールアプリケーションの実装をサポートするCommand(コンポーネント)で実行に用いるArtisanファサード
2.ミドルウェア
①Kernel
アプリケーションのセットアップやミドルウェアの設定を行い、ルータを実行する。
グローバルミドルウェア(全てのアクセスで自動的に実行)やミドルウェアのグループ化をKarnelで管理できる。
ルータ(ルート定義)にRequestを与え、実行で生成されたResponseを返す。
②ミドルウェア
リクエストをコントローラーで処理する前あるいは後のタイミングで処理を行うことができる。
3.認可
特定のモデルやリソースに関する認可ロジックを系統立てるクラス。
※標準ではProviders/AuthServiceProviderクラスに記述する。
①ポリシー
※クラス
特定のモデルやリソースに対するアクションに使用。(ゲートに比べてまとめて記述できる。)
②ゲート
※ファサード
クロージャベースで使用(モデルやリソースとは関連しないアクション)。
4.リクエスト
①フォームリクエスト
リクエストをフォーム利用のため拡張したもの。バリデーション関係の機能が組み込まれている。
5.Aritsanコマンド
以下ですべてのAritsanコマンドが確認できる。
php artisan list
6.関数
①nl2br()
以下のように{!! !!}の中でeエスケープ処理すると改行される。
{!! nl2br(e( $article->body )) !!}

7.API
①API(Application Programming Interface)
アプリケーションをプログラミングするためのインターフェース
外部とやり取りする窓口を作り、ソフトウェア同士をつなぐ。
WebAPIの例)Twitter、Facebook、Amazon、Google、ぐるなび
クッキーやセッションは通常のWebアプリケーションと同じ仕組みで利用できない。
②OAuth
外部サービスに認証を委託し、アプリケーション側ではユーザー情報だけを管理する仕組み。
8.テスト
ユニットテスト:クラスやメソッドなどモジュール単位の動作を検証。「PHPUnit」を拡張されたものが実装されてる。
フィーチャテスト:WebページやAPI機能を検証
9.その他
①トレイト
汎用性の高い機能をまとめて再利用できる仕組み。
Illuminate/Foundation/Auth下の認証系用ファイルでtraitが使われているのを確認できる。
※クラスでは1つのクラスが別のクラスを2つ以上継承することはできないのに対し、トレイトは同時に複数使用できる。
②ディレクティブ
コンパイラなどへの指示や指定などを与えるためのもの。(構文のような役割で、テンプレートに簡単に組み込むことができる。)
③アロー演算子(->)
クラスのメソッドやプロパティにアクセスするための演算子
メソッドチェーン:メソッドをアロー演算子でつなぐこと。()
④スコープ定義演算子(::)
静的(static)プロパティと静的メソッドにアクセスする。(インスタンスを作成せずクラス名から直接アクセス。)
⑤クエリビルダ
メソッドチェーンを用いてSQLを組み立てて発行する仕組み。
※queryはqueryメソッドなどと呼ばれ、指定したSQL文をデータベースに対して発行してくれる役割を持つ。
get()メソッドやfirst()メソッドはクエリを実行し結果を得るメソッド。他にもinsertなどデータ更新を行うためのメソッドなど沢山ある。
おわりに
まだまだ学習できていない部分が沢山あるので随時更新していきます。
テストもほぼ試したことないので、今後試していきたい部分。
備忘録
気になること
・Responseインスタンスの記述を基本見かけない点。
未学習
・コントラクト
・イベント/キュー
参考
今さら聞けないIT用語:やたらと耳にするけど「API」って何?
Laravelサービスコンテナの仕組みとシングルトンの罠 とても分かりやすい!!テストにも影響するらしい。
Laravelのファサードが全然わからなかったので自分なりに色々と調べた事
リクエストのライフサイクル 5.5 Laravel これ読めば色々と腹落ちできる!!はず!!
Closure:無名関数
一目でわかるPHP無名関数!使い方を簡単解説 ⇒ 関数名の乱立を防ぐ。コールバック関数を指定できる。 ※正直これじゃピンとこなかった。
[JavaScript] 猿でもわかるクロージャ超入門 まとめ ①関数の中の関数②変数代入、すぐ実行③
Laravelのバリデーションにはフォームリクエストを使おう
PHP: クラスの基礎 – Manual※extends ⇒ 継承に関して
Bladeテンプレート 6.x Laravel ⇒LaravelのBladeビューで使われるディレクティブがかなりまとめられている。
スコープ定義演算子 ※スコープ定義演算子に関してはこの記事がとてもわかりやすかったです。
概念を理解!PHPでstatic変数を使う方法【初心者向け】 ※このstaticの記事を読んだことで理解が深まりました。
・【PHP】PHP_EOL 改行の役割 参考
・コンストラクタ:新たにオブジェクトが生成される前にメソッドをコールする。(オブジェクトの初期化)
テンプレート内でのコンポーネント名の形式 – Vue.js スタイルガイド ⇒ Bladeテンプレート内では大文字小文字の区別がないのでVueコンポーネントの大文字2単語は小文字-で表現する。
単方向のデータフロー ⇒ 親コンポーネントからpropsされたプロパティの値を、子コンポーネント側で変更することは推奨されていない。
エンドポイント ⇒ 固有の一意なURI
コメントを残す