laravel中如何利用反射实现依赖注入
依赖注入在一个类中经常会依赖于其他的对象,先看一下经典的写法 class Foo { public $bar; public function __construct() { $this->bar = new Bar(); } } $foo = new Foo(); 当类的依赖发生改变时,比如 再看一下使用 class Foo { public $bar; public function __construct($bar) { $this->bar = $bar; } } $bar = new Bar(); //$bar = new Bar($args); $foo = $foo = new Foo($bar); 将 laravel中的依赖注入在 class SomeController { public function index(Request $request) { dd($request->all()); } } 只要在方法参数中申明 其实laravel在背后利用PHP的反射机制为我们做了 至于怎么实现,直接看代码 $method = new ReflectionMethod('SomeController','index'); $args = []; foreach($method->getParameters() as $parameter) { if ($class = $parameter->getClass()) { $args[] = new $class->name; //$request = new Request } } $method->invokeArgs(new SomeController,$args); 通过 篇幅不多,但是足够理解其中的原理了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |