この記事の例では、Laravel がコンストラクターの自動依存関係注入を実装する方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
自動依存関係注入は、次のコードに示すように、インスタンス化前に必要なクラスをインスタンス化する必要がなく、Laravel のコンストラクターで実装できます。 リーリー
コンストラクター内のいくつかの型制約に注意してください。実際、このコントローラーをインスタンス化してこれらの型のパラメーターを渡す場所はありません。Laravel はクラスのコンストラクター内の型制約パラメーターを自動的に検出し、それを行うかどうかを自動的に識別します。初期化して受信します。ソースコードvendor/illuminate/container/Container.phpのビルドメソッド:
リーリー
クラスのコンストラクターはここで解析され、ここに出力されます:
コンストラクターのパラメーターを見つけて、ビルド メソッドの完全な操作を確認します。
リーリー
コンテナからインスタンスを取得する具体的な方法:リーリー
フレームワークの最下層は、リフレクションを通じて開発用の多くの詳細を保存し、自動依存性注入を実現します。ここではこれ以上の詳細な調査は行いません。このプロセスをシミュレートするクラステストを作成しました:
リーリー
原則は、ReflectionClass クラスを通じてクラスのコンストラクターを解析し、コンストラクターのパラメーターを取り出して依存関係を判断し、それをコンテナーから取得して自動的に注入することです。転載元:シャオタンブログ http://www.tantengvip.com/2016/01/laravel-construct-ioc/
Laravel 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください: 「Laravel フレームワークの概要と高度なチュートリアル」、「php 優れた開発フレームワークの概要」、「Smarty テンプレートの基本チュートリアル」、「php の日付と時刻」使い方まとめ』、『phpオブジェクト指向プログラミング入門チュートリアル』、『php文字列(ストリング)使い方まとめ』、『php+mysqlデータベース操作入門チュートリアル』、『php共通データベース操作スキルまとめ』
この記事で説明した内容が、Laravel フレームワークに基づいた PHP プログラムの設計に役立つことを願っています。
興味がありそうな記事: