ホームページ  >  記事  >  バックエンド開発  >  PHP-DI 依存関係インジェクションを使用してクラスを自動的にロードする

PHP-DI 依存関係インジェクションを使用してクラスを自動的にロードする

WBOY
WBOYオリジナル
2016-06-20 12:27:121457ブラウズ

laravel を使用したことのある学生は、依存関係の挿入と自動読み込みについてよく理解している必要があります。たとえば、クラスをカスタマイズし、クラス オブジェクトをインスタンス化するインターフェイスを渡す場合、必要なのはそれだけです。これをAppServiceProviderに追加する必要があります。追加するだけで、laravelの外部でPHP-DIを使用してこれらのタスクを完了できます。

依存性の注入

依存性の注入は比較的単純な概念です。理解するには次の例を見てください。

<?phpuse App\User;class UserController{    protected $user;    public function __construct (User $user)    {        $this->user = $user;    }}

次に、 UserController User クラスによっては、インスタンス化にこれが必要になる場合があります。

new UserController(new User)

laravel では、コードは次のようになります (冗談です)

new UserController

コンテナ

まず、PHP-DI コンテナを使用してクラスを管理します。これは簡単な例である PHP-ID-example で、簡単な実装は次のとおりです http://rrylee.github.io/2015/09/23/laravel-container/#section-3

で使用しますプロジェクト

依存性注入やコンテナなどのいくつかの概念を理解した後、公式が Symfony2、Slim3 およびその他のフレームワークに関する詳細なチュートリアルを提供しています。自分で参照することもできます。

Slim 独自のコンテナと併用すると非常に便利です。

補足

laravelでは、php5.5が提供するマジックキーワードであるUser::classという書き方があり、クラスのフルネーム(return)を取得するために使用されます。文字列)、例

<?phpuse App\Foo;echo Foo::class; // App\Foo

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。