サービスコンテナの概要から始め、その後、カスタムサービスプロバイダーの構築とLaravelアプリケーションへの統合に関する包括的なガイドが続きます。 また、重要な
およびメソッドを調べます
register
boot
サービスコンテナとサービスプロバイダーを理解する
Laravelサービスコンテナは、アプリケーションコンポーネントの中央リポジトリとして機能し、依存関係を管理し、依存関係の噴射を促進します。 公式ドキュメントが述べているように、それはクラスの依存関係を管理し、依存関係インジェクションを実行するための強力なツールです。 これにより、手動のインスタンス化がなくなり、コードの緊密な結合が減少します。 この例を考えてみましょう:
ここで、
はサービスコンテナから自動的に注入されます。
class SomeClass { public function __construct(FooBar $foobarObject) { // use $foobarObject object } }
FooBar
これは
を作成します。メソッドは、コンテナにクラスをバインドする場所です。 プロバイダーを登録するには
php artisan make:provider EnvatoCustom
app/Providers/EnvatoCustomServiceProvider.php
register
これはプロバイダーを登録しますが、現在空です。 次のセクションでは、providers
メソッドの機能を示しています。config/app.php
App\Providers\EnvatoCustomServiceProvider::class,
およびboot
メソッド
Laravelのドキュメントは、インターフェイスに依存しない場合、バインディングクラスは必要ないことを強調しています。 コンテナは、反射を使用してこれらを解決できます。 ただし、実装への結合インターフェイスは、柔軟性に役立ちます。boot
register
実世界の例:認証サービス
複数のアダプター(JSONおよびXMLなど)を使用して認証サービスを構築しましょう。 これは、サービスプロバイダーの力を示しています
インターフェイスを作成します::
app/Library/Services/Contracts/AuthenticationServiceInterface.php
in<?php namespace App\Library\Services\Contracts; interface AuthenticationServiceInterface { public function authenticate($credentials); }
JsonAuthentication
インターフェイスをapp/Library/Services/JsonAuthentication.php
:<?php namespace App\Library\Services; use App\Library\Services\Contracts\AuthenticationServiceInterface; class JsonAuthentication implements AuthenticationServiceInterface { public function authenticate($jsonData) { // Parse $jsonData and authenticate... return 'JSON based Authentication'; } }
EnvatoCustomServiceProvider.php
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Library\Services\JsonAuthentication; class EnvatoCustomServiceProvider extends ServiceProvider { public function register() { $this->app->bind('App\Library\Services\Contracts\AuthenticationServiceInterface', function ($app) { return new JsonAuthentication(); }); } public function boot() { // ... } }
boot
メソッドは、イベントリスナーの登録やビュー作曲家などのタスクによく使用されます。 たとえば、ビューコンポーザーの追加:
class SomeClass { public function __construct(FooBar $foobarObject) { // use $foobarObject object } }
またはモデルバインディングの定義:
php artisan make:provider EnvatoCustom
結論
この記事では、Laravelのサービスコンテナとサービスプロバイダーを対象とし、カスタムプロバイダーの作成と登録を導き、実際の例で実用的なアプリケーションを実証しました。 詳細と高度なテクニックについては、公式のLaravelドキュメントを参照してください。以上がLaravelサービスプロバイダーを登録および使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。