具有反射参数的Laravel类方法
我通常使用如下参数:具有反射参数的Laravel类方法,laravel,laravel-5.4,Laravel,Laravel 5.4,我通常使用如下参数: public function test($parameter) { echo 'Parameter value: ' . $parameter; } 在查看时,我看到了此代码 public function __construct(UserRepository $users) { $this->users = $users; } 根据文档,它使用反射。但我不明白 我不知道参数UserRepository$users是如何工作的
public function test($parameter)
{
echo 'Parameter value: ' . $parameter;
}
在查看时,我看到了此代码
public function __construct(UserRepository $users)
{
$this->users = $users;
}
根据文档,它使用反射。但我不明白
我不知道参数
UserRepository$users
是如何工作的。这是别名还是什么?这称为类型暗示,用于在构造函数中注入依赖项或验证传递给函数的参数的正确类型。注入仅仅意味着,如果使用make
方法调用该类,Laravel将自动提供构造函数所需的类的实例
例如,如果您有一个函数public function something(string$something)
,如果将string
以外的任何类型传递给此函数,确保使用了正确的数据,则会抛出错误
从laravel文档中:
或者,重要的是,您可以在容器解析的类的构造函数中“键入提示”依赖项,包括控制器、事件侦听器、队列作业、中间件等。实际上,这是容器解析大多数对象的方式。例如,您可以在控制器的构造函数中键入应用程序定义的存储库。存储库将自动解析并注入类:
Laravel有一个很好的服务容器,它可以进行所有依赖项注入,所以您不需要传递class a参数,Laravel可以为您完成 如果没有容器,则必须传递此参数
class A {
public $foo;
public function __construct (Foo $foo){
$this->foo
}
$classA = new A((new Foo))
当laravel遇到这些类时,它会解析它们
您还可以使用singleton()
或bind()方法手动定义这些类
$this->app->singleton('FooBar', function($app)
{
return new FooBar($app['SomethingElse']);
});
或者您可以使用接口。您可以将的实现类绑定到接口和laravel,当遇到该干扰时,它将按照您的意愿解决
$this->app->bind('App\ICacheManager', 'App\RedisManager');
public $redis;
public function __contruct(ICacheManager $redis){
$this->redis = $redis;
}
欲了解更多详情,请查看这是anserwer:)。+1.