Laravel 5 - 方法注入

Dim*_*nov 6 php dependency-injection laravel laravel-5

方法注入如何在Laravel 5(我的意思是实现)中工作,我可以在自定义方法中注入参数,而不仅仅是在控制器操作中吗?

Mar*_*yan 12

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);
Run Code Online (Sandbox Code Playgroud)

你也可以看看功能

public function call($callback, array $parameters = [], $defaultMethod = null)
Run Code Online (Sandbox Code Playgroud)

https://github.com/laravel/framework/blob/master/src/Illuminate/Container/Container.php 文件中了解更多详情

3)您可以使用方法注入自定义方法

App::call('\App\Http\Controllers\Api\myTestFunction');
Run Code Online (Sandbox Code Playgroud)

或方法

App::call([$object, 'myTestMethod']);
Run Code Online (Sandbox Code Playgroud)