Laravelのサービスプロバイダ使用編
3782 ワード
神秘的なベール、时にはそれを読まないで、それは良い牛だと思って、良い牛が追い詰めます!
バージョンの説明
Laravel 5.2、その他のバージョンは対応マニュアルを見て、その後5.3,5.4,5.5,5.6を出して絶えず補充します.
公式プロフィール
すべてのLaravelアプリケーションが起動する中心であり、すべてのLaravelのコアサービスはサービスプロバイダによって起動され、サービスプロバイダはアプリケーション構成の中心である.
ここではIOC(コントロール反転)も依存注入と呼ぶことを知る必要がある.このIOCはもう一つの文章を書くつもりで、その時になってからリンクを貼るつもりです.
使用の原則
クラスがインタフェースに基づいていない場合は、コンテナにバインドする必要はありません.単純なクラスであれば、余計なことをする必要はありません.
サービスプロバイダの作成
作成後のファイルの場所:app/Providers/下
組織に参加しないと見つからないconfig/app.php
1.boot関数
これは一般的に論理を書くガイドで、カスタムBlade命令の文章を参照して理解することができます.
2.regist関数
登録またはバインドの意味は、登録は私たちにアプリケーションを教えて、私のこの関数はすでに登録して、あなたはそれを通じて依存を実現することができて、さもなくば依存を注入することができませんと言います
2.1登録方法
singletonを使用して単一の例をバインドします.この方法では、ネーミングスペースを書き込む必要がなく、別名を直接呼び出すことができます.
ここでの「test」はバインドインスタンスの別名を表し、後で匿名関数に対応し、実装方法を表し、もちろん直接クラスを書くこともできます.
これはどのように呼び出すか、App::makeで呼び出すかapp()関数で登録します.
bindを使用してインスタンスをインタフェースにバインドし、注入に依存します.
ここでの「AppContractsTestContract」は、この依存注入が必要な場合、後の匿名関数を実行する必要があると考えられます.ここでもクラスの最初のパラメータを直接書くことができます.最初のパラメータは名前と考えることができます.2番目は実装方法です.
呼び出し形式
Instance登録インスタンス
よびだし
tagラベル使用
≪イベント|Events|ldap≫
JSのリスニングイベント、例えばクリックしたリスニング時間に似ています.
他の方法は、マニュアルを見てみましょう.簡単です.
実装例このドキュメントを参照してください.ここではくどくどしません.http://laravelacademy.org/post/796.html
バージョンの説明
Laravel 5.2、その他のバージョンは対応マニュアルを見て、その後5.3,5.4,5.5,5.6を出して絶えず補充します.
公式プロフィール
すべてのLaravelアプリケーションが起動する中心であり、すべてのLaravelのコアサービスはサービスプロバイダによって起動され、サービスプロバイダはアプリケーション構成の中心である.
ここではIOC(コントロール反転)も依存注入と呼ぶことを知る必要がある.このIOCはもう一つの文章を書くつもりで、その時になってからリンクを貼るつもりです.
使用の原則
クラスがインタフェースに基づいていない場合は、コンテナにバインドする必要はありません.単純なクラスであれば、余計なことをする必要はありません.
サービスプロバイダの作成
作成後のファイルの場所:app/Providers/下
php artisan make:provider TestServiceProvider
組織に参加しないと見つからないconfig/app.php
'providers' => [
...
App\Providers\TestServiceProvider::class,
]
1.boot関数
これは一般的に論理を書くガイドで、カスタムBlade命令の文章を参照して理解することができます.
#EXP
public function boot()
{
view()->composer('view', function () {
//
});
}
2.regist関数
登録またはバインドの意味は、登録は私たちにアプリケーションを教えて、私のこの関数はすでに登録して、あなたはそれを通じて依存を実現することができて、さもなくば依存を注入することができませんと言います
2.1登録方法
singletonを使用して単一の例をバインドします.この方法では、ネーミングスペースを書き込む必要がなく、別名を直接呼び出すことができます.
$this->app->singleton('test',function(){
return new TestService();
});
//
//$this->app->singleton('test','App\Services\TestService');
ここでの「test」はバインドインスタンスの別名を表し、後で匿名関数に対応し、実装方法を表し、もちろん直接クラスを書くこともできます.
これはどのように呼び出すか、App::makeで呼び出すかapp()関数で登録します.
$test = App::make('test');// $this->app->make('test'); app('test')
$test->callMe('TestController');
bindを使用してインスタンスをインタフェースにバインドし、注入に依存します.
$this->app->bind('App\Contracts\TestContract',function(){
return new TestService();
});
//
//$this->app->bind('App\Contracts\EventPusher', 'App\Services\TestService');
ここでの「AppContractsTestContract」は、この依存注入が必要な場合、後の匿名関数を実行する必要があると考えられます.ここでもクラスの最初のパラメータを直接書くことができます.最初のパラメータは名前と考えることができます.2番目は実装方法です.
呼び出し形式
test = $test;
}
public function index()
{
$this->test->callMe(222);;
return view('index');
}
}
Instance登録インスタンス
$test_Service= new TestService();
$this->app->instance('TestService', $test_Service);// ,
よびだし
$this->app->make('TestService'); $this->app['TestService'];
tagラベル使用
$this->app->bind('SpeedReport', function () {
//
});
$this->app->bind('MemoryReport', function () {
//
});
$this->app->tag(['SpeedReport', 'MemoryReport'], 'reports');
//
$test = App::make('reports');// $test = $this->app->make('reports'); app('reports')
$test->callMe('TestController');
≪イベント|Events|ldap≫
JSのリスニングイベント、例えばクリックしたリスニング時間に似ています.
$this->app->resolving(function ($object, $app) {
//
});
$this->app->resolving(function (FooBar $fooBar, $app) {
// “FooBar”
});
他の方法は、マニュアルを見てみましょう.簡単です.
実装例このドキュメントを参照してください.ここではくどくどしません.http://laravelacademy.org/post/796.html