私は Laravel 5 のパッケージを開発しています。Laravel の Core クラスを使用するときにパッケージの依存性注入の恩恵を受けることにしましたが、詳細を読み、この質問も行った後 、Laravel 5 パッケージでの依存性注入のベスト アプローチ
Facades
ここで、コンテナのような静的メソッドを大量に使用して呼び出している場合、実際にオブジェクトを作成してそのメソッドを呼び出すという考えを思いつきました。FaceadeName:nameOfMethod
そのため、Facades からも利用できるクラスの laravel の依存性注入を使用して拡張することもできます。はほとんど役に立ちません。
たとえば、次のクラスがあります。
class MyController extends \App\Http\Controllers\Controller
{
public $text;
public $lang;
public function __construct()
{
// Some codes here
}
public function myFunction(){
$this->text = \Lang::get('package::all.text1');
}
}
これを行う:
App::bind('lang', function($app)
{
return new \Lang();
});
そして、関数で:
public function myFunction()
{
$lang = \App::make('lang');
$this->text = $lang::get('package::all.text1');
}
すでにそこにバインドされているコンテナに何かをバインドするため、ほとんど役に立ちません
myFunction
に変更するのは良い考えではありません
public function myFunction(\Lang $lang){
$this->text = $lang::get('package::all.text1');
}
また、メソッド インジェクションのように見えるかもしれませんが、あまり利点はありません。したがって、Laravelではdependency injection
forを使用しない方がよいでしょう。Facades
私が正しいかどうか教えてください。間違っている場合は、正しい答えで私の意見を議論してください。