おすすめ書籍はじめに今回の記事では、PHPのフレームワークであるLaravelのDIに関する機能と実装方法を紹介します。Laravelの基礎知識に関してはこちらをご覧ください。Injection)とはあるコンポーネントで利用する別のコンポーネントを外部から注入できるようにするデザインパターンです。コンポーネント間を疎結合にするために、コンポーネント間の関係には具体的なコンポーネントではなくインタフェースを用います。DIに関してはこちらが参考になります。サービスコンテナサービスコンテナはLaravelアプリケーションにおいてインスタンスの管理を行う機能です。サービスコンテナの役割は大きく分けて二つあります。一つはインスタンスの生成方法の管理、もう一つは生成したインスタンスの管理です。サービスプロバイダサービスプロバイダはインスタンスの生成方法をサービスコンテナに登録する役割を担います。サービスコンテナここでは、サービスコンテナにインスタンスの生成方法を登録する方法(バインド)とサービスコンテナを利用したインスタンスの生成方法(解決)について説明します。バインドバインドには下記の四つの方法が用意されています。bindメソッドbindIfメソッドsingletonメソッドinstanceメソッドbindまず始めに一般的なbindメソッドの使用方法を説明します。メソッドの第一引数に文字列(登録名)、第二引数にクロージャ(生成方法)を指定します。Message($parameters[0]);});bindIfbindIfメソッドは引数に指定した文字列に対応したバインドが存在しない場合にバインドを行います。Hanako!'singletonメソッドsingletonメソッドでバインドした場合、生成したインスタンスはサービスコンテナにキャッシュされます。Hanako!'instanceメソッドinstanceメソッドは生成したインスタンスをサービスコンテナにバインドします。ヘルパ関数で行います。クラスや独自のサービスプロバイダクラスに定義します。追加],サービスプロバイダクラスにはregisterメソッドとbootメソッドがあります。バインド処理は基本的にregisterメソッドに記述します。インスタンス生成時に他のクラスを利用する必要がある場合はbootメソッドに記述します。DIを利用するここではLaravelでのDIの利用方法を紹介します。下記の用にインタフェースとクラスを定義し、バインドします。Notice::class);コンストラクタインジェクション上記のインタフェースをコンスタラクタインジェクションで利用する場合は下記のようになります。Taro!'メソッドインジェクションメソッドインジェクションで利用する場合は下記のようになります。Taro!'さいごにLaravelでのDIの利用にあたり重要な機能であるサービスコンテナとサービスプロバイダについて説明しました。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイト上に表示された文字を入力してください。...PREV名前しか知らなかったクリエイティブ・コモンズライセンスを調べてみるNEXT[Kotlin]DatePickerDialogとTimePickerDialogを使って見た。私たちは無料アプリもリリースしています、ぜひご覧ください。下記のアイコンから無料でダウンロードできます。