Код для примера
Контроллер:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Product;
class TestController extends Controller
{
public function index(Request $request, Product $product, $id)
{
dd(
$request->all(),
$product->findOrFail($id),
$id
);
}
}
Маршрут:
Route::get('test/{id}', 'TestController@index');
Вызов метода:
app()->call([new App\Http\Controllers\TestController, 'index'], ['id' => 1]);
$id берется с строки запроса, тут понятно. Но как в фреймворке работает внедрение зависимостей в метод. Откуда приложение знает что мне нужно передать объект класса Request и Product? Как это работает в Laravel и как реализовать такой функционал на чистом PHP?
Использует паттерн внедрения зависмостей, берется из контейнера
Используется ReflectionClass для определения параметров
Контейнер Классы иницилизации контейнера
Продвижение своими сайтами как стратегия роста и независимости