Вот и я об том, что использовать что-то надо в соответствии с задачей. Не более.
В любом случае, я вопросы спрашиваю больше из энтомологическоо интереса. Вполне понятно, что писать фреймворк самому нет ни желания ни необходимости.
А вот начальное понимание подхода - интересно. вдруг понадобится использовать, надож хоть чутка понимать почему оно делает так а не иначе, и как оно работает, для большей лучшести.
Вот теперь стало понятнее. с одной стороны. а с другой, появляется глобальный вопрос, для чего так мощно усложнять?.
Почему от этого всего не оставить только :
$request = new Request();
$path = $request->getPath();
А дальше примитивная магия:
Это для примераswitch ($path){
case '\':
echo('Hello, World!');
break;
case '\users':
echo('USERS');
break;
case '\users\ivan':
echo('Hello, Ivan');
break;
default:
echo('404');
break;
}
Это для примера. а не в качестве настойчивости на своей точке зрения.
Пока вот это даже внешне выглядит сильно симпатичнее и понятнее, чем приведенные примеры конфигурации и запуска суммарно.
Пока для меня примеры выглядят как попытка забить гвоздь перфоратором.
Посмотрел на slim. Таже - фигня в плане логики. Нифига мой мозг не принимает подход, в котором мы:
При получении запроса делаем $app->router->get(маршрут, обработчик маршрута ) , то-есть,
Мы при получении запроса СОЗДАЕМ и маршрут и его обработчик.
При этом создаваемый маршрут никоим образом не связан с запросом.
И тут же этот маршрут обрабатываем.
вместо того, чтобы сделать $handlerResult = $app->routeHandler($app->router->get($app->request->getPath());
То-есть вопрос-то не конкретно к приведенному автором примеру, а в принципе почему так? я это к чему, вот есть у меня, например, 50 страниц сайта с единой точкой входа. Моя прямолинейная логика говорит примерно следующее:
при получении запроса напрмер localhost:8080/маршрут3, получить путь 'маршрут3' из URI
поискать путь в маршрутах и получить параметры обработки маршрута
обработать маршрут и выдать результат.
То есть по факту 3 вопроса пока по крупному:
Почему маршрут никак очевидным образом не ориентированный на URI СОЗДАЕТСЯ при получении запроса, а не ИЩЕТСЯ на основании URI запроса?
Почему маршрут Создается вместе с обработчиком (что для 50 страниц сайта надо 50 обработчиков/ 50 ссылок на обработчик в маршрутах? А если обработчик "сложносочиненный"? А сложносочиненному обработчику сразу надо дать все данные для обработки - таки их же для начала построить надо из чего-то?)?
Для чего при каждом запросе СОЗДАВАТЬ маршрут заново?
Вот и я об том, что использовать что-то надо в соответствии с задачей. Не более.
В любом случае, я вопросы спрашиваю больше из энтомологическоо интереса. Вполне понятно, что писать фреймворк самому нет ни желания ни необходимости.
А вот начальное понимание подхода - интересно. вдруг понадобится использовать, надож хоть чутка понимать почему оно делает так а не иначе, и как оно работает, для большей лучшести.
Но авторизацию-то в обоих случаях придется писать ))) (я не говорю про большие фреймворки, я пока только про мелочевку)
Вот теперь стало понятнее. с одной стороны. а с другой, появляется глобальный вопрос, для чего так мощно усложнять?.
Почему от этого всего не оставить только :
А дальше примитивная магия:
Это для примера. а не в качестве настойчивости на своей точке зрения.
Пока вот это даже внешне выглядит сильно симпатичнее и понятнее, чем приведенные примеры конфигурации и запуска суммарно.
Пока для меня примеры выглядят как попытка забить гвоздь перфоратором.
Посмотрел на slim. Таже - фигня в плане логики. Нифига мой мозг не принимает подход, в котором мы:
При получении запроса делаем $app->router->get(маршрут, обработчик маршрута ) , то-есть,
Мы при получении запроса СОЗДАЕМ и маршрут и его обработчик.
При этом создаваемый маршрут никоим образом не связан с запросом.
И тут же этот маршрут обрабатываем.
вместо того, чтобы сделать $handlerResult = $app->routeHandler($app->router->get($app->request->getPath());
То-есть вопрос-то не конкретно к приведенному автором примеру, а в принципе почему так? я это к чему, вот есть у меня, например, 50 страниц сайта с единой точкой входа. Моя прямолинейная логика говорит примерно следующее:
мне надо создать массив маршрутов, вида
при получении запроса напрмер localhost:8080/маршрут3, получить путь 'маршрут3' из URI
поискать путь в маршрутах и получить параметры обработки маршрута
обработать маршрут и выдать результат.
То есть по факту 3 вопроса пока по крупному:
Почему маршрут никак очевидным образом не ориентированный на URI СОЗДАЕТСЯ при получении запроса, а не ИЩЕТСЯ на основании URI запроса?
Почему маршрут Создается вместе с обработчиком (что для 50 страниц сайта надо 50 обработчиков/ 50 ссылок на обработчик в маршрутах? А если обработчик "сложносочиненный"? А сложносочиненному обработчику сразу надо дать все данные для обработки - таки их же для начала построить надо из чего-то?)?
Для чего при каждом запросе СОЗДАВАТЬ маршрут заново?
Ну вдруг там дальше все наладится и станет хорошо, а этот пост "затравочный".
Посмотреть ничего не мешает и посмотрю, обязательно. Яж не про реализацию минифреймворков на гитхаб, а про конкретно написанное здесь.
Ну и еще сразу вопросы. Возможно, конечно моя логика вывернута, но:
Условно есть запрос, ну например, localhost:8080/contact/all
Есть кусок кода, $app->router->get('/contact/', ... ); в index.php
Кусок кода из пункта 2 создает в $routes маршрут.
В моем понимании логично было бы get-том что-то получать, а не создавать.
Ну и в свете этого:
- может Request имеет смысл внутрь Application?
- и $app->router->get($app->request->getPath(), ...); и чтоб он не создавал маршрут, а отдавал что-то ?
- А $routes в Router создать загодя?
Да очередной Hello, World, но полезный для таких неучей, как я, например.
Реакция "гуру", познавших дзен - весьма странная.
Автор, продолжайте. Вполне интересно.
Вот только Fatal error: Uncaught ArgumentCountError: Too few arguments to function app\core\Application::__construct()
$ROOT_DIR - а- то конструктору не даем нигде.