Laravel 5 - 方法注入
Laravel 5 - Method injection
方法注入如何在 Laravel 5 中工作(我的意思是实现),我可以在自定义方法中注入参数,而不仅仅是在控制器操作中吗?
1) 阅读本文以了解有关 laravel 5
中方法注入的更多信息
http://mattstauffer.co/blog/laravel-5.0-method-injection
https://laracasts.com/series/whats-new-in-laravel-5/episodes/2
2) 下面是方法注入的简单实现
$parameters = [];
$reflector = new ReflectionFunction('myTestFunction');
foreach ($reflector->getParameters() as $key => $parameter) {
$class = $parameter->getClass();
if ($class) {
$parameters[$key] = App::make($class->name);
} else {
$parameters[$key] = null;
}
}
call_user_func_array('myTestFunction', $parameters);
你也可以看看函数
public function call($callback, array $parameters = [], $defaultMethod = null)
在https://github.com/laravel/framework/blob/master/src/Illuminate/Container/Container.php
文件了解更多详情
3) 自定义方法可以使用方法注入
App::call('\App\Http\Controllers\Api\myTestFunction');
或方法
App::call([$object, 'myTestMethod']);
下面是方法注入的简单例子,我们在laravel.eg
中经常用到
public function show(Request $request,$id){
$record = $request->find($id);
dd($record);
}
-这里注入Request类型的对象,可以注入模型class对象等
或一般示例:
class A{}
class B{
function abc(A $obj){}
}
-so function abc of class B will accept object of Class A.
like:
$obj = new A();
$obj2 = new B();
$obj2->abc($obj);
php7+
中还有一个例子
class Foo {
public function bar(Baz $baz)
{
$this->custom(...$baz);
}
protected function custom(Baz $baz, Baz2 $baz2, Baz3 $baz3)
{
return $baz3;
}
}
方法注入如何在 Laravel 5 中工作(我的意思是实现),我可以在自定义方法中注入参数,而不仅仅是在控制器操作中吗?
1) 阅读本文以了解有关 laravel 5
中方法注入的更多信息http://mattstauffer.co/blog/laravel-5.0-method-injection
https://laracasts.com/series/whats-new-in-laravel-5/episodes/2
2) 下面是方法注入的简单实现
$parameters = [];
$reflector = new ReflectionFunction('myTestFunction');
foreach ($reflector->getParameters() as $key => $parameter) {
$class = $parameter->getClass();
if ($class) {
$parameters[$key] = App::make($class->name);
} else {
$parameters[$key] = null;
}
}
call_user_func_array('myTestFunction', $parameters);
你也可以看看函数
public function call($callback, array $parameters = [], $defaultMethod = null)
在https://github.com/laravel/framework/blob/master/src/Illuminate/Container/Container.php 文件了解更多详情
3) 自定义方法可以使用方法注入
App::call('\App\Http\Controllers\Api\myTestFunction');
或方法
App::call([$object, 'myTestMethod']);
下面是方法注入的简单例子,我们在laravel.eg
中经常用到public function show(Request $request,$id){
$record = $request->find($id);
dd($record);
}
-这里注入Request类型的对象,可以注入模型class对象等
或一般示例:
class A{}
class B{
function abc(A $obj){}
}
-so function abc of class B will accept object of Class A.
like:
$obj = new A();
$obj2 = new B();
$obj2->abc($obj);
php7+
中还有一个例子class Foo {
public function bar(Baz $baz)
{
$this->custom(...$baz);
}
protected function custom(Baz $baz, Baz2 $baz2, Baz3 $baz3)
{
return $baz3;
}
}