Есть класс Route, в котом я что-то не понимаю как связать метод prepareCallback и run.
class Router
{
private $method;
private $path;
private $callback;
public function get($path, $callback)
{
}
private function prepareCallback($callback)
{
}
public function run($uri)
{
}
}
prepareCallback() - преобразует callback к исполняемой callback функции.
run() - запускает и возвращает результат работы callback функции. параметры получает из url и передает в callback функцию.
Что значит: prepareCallback() - преобразует callback к исполняемой callback функции? Если я правильно понимаю, то это результат работы call_user_func, но как потом этому результату передать параметры из url в методе run?
Мой вариант реализации метода run($uri) без проверок и получений параметров из uri:
if (is_object($this->prepareCallback($this->callback))) {
return call_user_func($this->callback, $uri);
} else {
return $this->prepareCallback($this->callback);
}
Вызов роутера
$router->get('/about', function() {
return new App\View\View('index', ['title' => 'about page']);
});
$router->get('/cat', \App\Controller::class . '@category');
$router->get('/delivery', function (){
return 'delivery';
});