php – 如何在课堂上访问Laravel Singletons?
发布时间:2020-12-14 19:44:32 所属栏目:大数据 来源:网络整理
导读:我在服务提供商中注册了一个单身人士,如下所示: $this-app-singleton(MyClass::class); 通常只需在参数中声明它就可以访问它: class FooController extends Controller{ public function index(MyClass $myClass) { //... }} 但是我似乎无法在其他自定义类
我在服务提供商中注册了一个单身人士,如下所示:
$this->app->singleton(MyClass::class); 通常只需在参数中声明它就可以访问它: class FooController extends Controller { public function index(MyClass $myClass) { //... } } 但是我似乎无法在其他自定义类(即非控制器类)中访问此单例. (https://laravel.com/docs/5.2/container#resolving) 比如像这里: class Bar { private $myClass; private $a; private $b; public function __construct($a,$b) { $this->a = $a; $this->b = $b; $this->myClass = ... // TODO: get singleton } } 我该怎么做呢? 请注意,我将创建多个Bar实例. 解决方法
在构造函数中键入提示类/接口,在大多数情况下,Laravel会自动解析并将其注入到您的类中.
有关示例和替代方案,请参见Service Provider documentation. 跟你的例子一起: class Bar { private $myClass; public function __construct(MyClass $myClass) { $this->myClass = $myClass; } } 如果Bar :: __构造采用了无法在服务提供者中定义的其他参数,则必须使用服务定位器: /* $this->app is an instance of IlluminateFoundationApplication */ $bar = new Bar($this->app->make(MyClass::class),/* other parameters */); 或者,将服务位置自动移动到构造函数中: use IlluminateSupportFacadesApp; class Bar { private $myClass; public function __construct() { $this->myClass = App::make(MyClass::class); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |