Код для примера
Контроллер:
<?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 для определения параметров
Контейнер Классы иницилизации контейнера
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости