我正在为Laravel 5开发一个包,我决定在我的包中使用Dependency Injection,并且很容易在Laravel中实现,特别是constructor injection
,但是当涉及Facades
一些新的时候问题出现了。当我们有像
class MyController extends \App\Http\Controllers\Controller
{
public $text;
protected $lang;
public function __construct(\Lang $lang)
{
$this->lang = $lang;
}
public function myFunction(){
$this->text = $this->lang->get('package::all.text1');
}
}
上面的代码不起作用,因为Lang
是Facade
,因此我们必须将代码更改为:
use Illuminate\Translation\Translator
class MyController extends \App\Http\Controllers\Controller
{
public $text;
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
public function myFunction(){
$this->text = $this->translator->get('package::all.text1');
}
}
问题: 我需要知道使用外观来使用构造函数注入的优点和缺点
我也检查了这个问题: laravel - dependency injection and the IoC Container已经问过这个问题了: Dependency Injection in Laravel 5 Package To Use or Not To Use
你也可以帮助确认第一个问题的答案