Как метод инъекции работает в Laravel 5 (я имею в виду реализацию), можно ли вводить параметры в пользовательский метод, а не только в действия контроллера?Laravel 5 - Метод инъекции
4
A
ответ
9
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']);
2
Вот простой пример инъекции метод, который мы часто используется в laravel.eg
public function show(Request $request,$id){
$record = $request->find($id);
dd($record);
}
-Вот мы вводим объект типа запроса, и мы можем придать модели класса объекта и т.д.
Или общий пример:
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);