Laravel は人気のある PHP 開発フレームワークであり、その制御反転 (IoC) コンテナは最も強力な機能の 1 つです。
制御の反転により、開発者はオブジェクトのライフサイクルと依存関係をより柔軟に管理できるようになり、オンデマンドでアクセスできるようになります。 Laravelでは、制御反転コンテナはService ContainerとFacadeから構成されます。
この記事では、Laravel での制御の反転の実装について詳しく説明し、それを使用してアプリケーション内のオブジェクトと依存関係を管理する方法を説明します。
サービスコンテナはLaravel IoCの中核部分です。これにより、ライフサイクルを管理しながら、依存関係を登録し、インスタンス化された依存関係を取得できます。
Laravel では、次の方法でコンテナに依存関係を登録できます。
Use $app -> instance()
このメソッドはオブジェクトをコンテナにバインドし、必要なときにいつでもアクセスできるようにします。
例:
$app->instance('foo', new Foo);
これで、次の方法でコンテナから foo
インスタンスを取得できるようになります:
$foo = $app->make('foo');
$app->bind()
メソッドを使用して、クラスをコンテナにバインドします。
例:
$app->bind('foo', 'Foo');
これで、次の方法でコンテナから foo
インスタンスを取得できます。
$foo = $app->make('foo');
これにより、新しい Foo が返されます。
クラスのインスタンス。
$app->singleton()
メソッドを使用して、アクセスごとにクラスをコンテナにバインドすると、常に同じインスタンス。
例:
$app->singleton('foo', 'Foo');
これで、次の方法でコンテナから foo
インスタンスを取得できるようになります:
$foo = $app->make('foo');
これは常に同じ Foo を返します
クラスインスタンス。
Facade は Laravel のもう 1 つの重要な概念であり、静的構文を通じてサービス コンテナ内のオブジェクトにアクセスできるようになります。
Laravel では、Facade は __callStatic()
マジック メソッドを使用して、すべてのメソッド呼び出しをサービス コンテナに渡し、インスタンス化されたオブジェクトをコンテナから取得します。これは制御の反転です。
たとえば、次のメソッドを使用して、Laravel の View
インスタンス (これはサービス コンテナに登録されたクラス) にアクセスできます。
// 通过Facade语法 return View::make('welcome');
これにより、自動的に ## が呼び出されます。 #View Facade の
__callStatic() メソッドを呼び出し、コンテナを通じて
View インスタンス化されたオブジェクトを返します。
class MyClass { protected $foo; public function __construct(Foo $foo) { $this->foo = $foo; } }
MyClass インスタンス化されたオブジェクトをリクエストすると、コンテナは
MyClass に
Foo が必要であることを自動的に検出します。 インスタンスなので、
Foo クラスは自動的にインスタンス化され、
MyClass コンストラクターに挿入されます。
以上がLaravel で制御反転を実装する方法についての詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。