Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有反射参数的Laravel类方法_Laravel_Laravel 5.4 - Fatal编程技术网

具有反射参数的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.