xsash: действительно дороже выходит. Могу порекомендовать ребят Fozzy, у них вот такие расценки: prntscr.com/czmivg
От этой цены можете отнять 10%, я могу дать вам скидку, и вас запишет мне в реферальную программу. Сервера VPS расположены в NL, USA, Russia. За VPS сказать что-то не могу, но хостингом я на 100% доволен, и если бы когда-то нуждался в VPS, то брал бы у них. Но если постараться, то можно и подешевле конечно найти :)
https://wordpress.org/support/topic/passing-argume...
Почитай вот тут, у тебя echo в хидере должно отработать, может ты и не видишь его. Попробуй что-то написать вроде asdasdasd. И потом в исходном коде через Ctrl+F сделать поиск, если найдет - значит отработало.
Сергей Протько: неоднократно видел ваши ответы на toster. Очень часто вы упоминаете адаптеры, сейчас же вы указали в скобках после слова контроллер: адаптеры, мидлвэры. Возникает вопрос: это все одно и то же, или же есть какая-то разница между этим всем? Можно ли это (stackoverflow.com/a/101561 ) считать ответом на ваш вопрос?
Сергей Протько: какие обязанности возлагают на себя Router и FrontController? Зачем нужен FrontController, если сам по себе Router инициирует нужный контроллер в зависимости от того, попал ли текущий URI в карту роутингов, и если да - то вызовет именно тот класс/контроллер, который указан в карте роутингов. У меня складывается ощущение, что сам по себе FrontController создан для того, чтобы строить модульную (имеется ввиду поддержка расширений/плагинов) архитектуру приложения, которая будет расширятся другими разработчиками и чтобы это как-то стандартизировать, или же я ввиду своей неопытности и не имея реальных проектов за спиной не вижу очевидного профита от FrontController. Если кратко вопрос: почему Router вызывает контроллер, который не FrontController. Или FrontController - это абстрактный класс, экземпляр которого не возможно получить?
По поводу PSR-4 и FrontController, в виду своей неопытности, я возможно не правильно выразился. Просматривая листинги, натыкался на файл FrontController, который парсил $uri, и занимался следующим: проверял название первого элемента массива, например 'news' и подключал файл /controllers/NewsController.php, после чего в переменную $controller помещал экземпляр класса NewsController. Затем проверял action, например 'read', и вызывал метод NewsController::readAction($id), и т.д.
Вы говорите о единой точке для входа. Но мне не ясно, зачем вообще создавать класс FrontController, если можно по сути прописать такой роутинг:
Router::get('/news/:params', 'News'), и класс Router сделает следующее:
1) Проверит uri на совпадение.
2) Проверит второй параметр: функция замыкания (ReflectionFunction::isClosure) или же class_exists() и потом проверит, реализует ли этот контроллер методы интерфейса \Interfaces\Controller. Если да, то создаст новый экземпляр класса и вызовет метод init() который все и активирует.
Эта схема плоха, если да, то чем? Зачем нам класс, который инициирует контроллер, который инициирует контроллер, ведь можно сразу запустить нужный нам контроллер?
trevoga_su: я понимаю, что нужно мыслить абстрактно. Но все же, в современных фреймоврках (например Laravel) есть файл для роутинга, таким образом написав
Route::get('/news/$params', function(){
\News\Controller::init();
});
мы уже определили путь /news/ для работы. Какой тогда смысл от FrontController?
Спасибо.
SELECT `price`, `purchase_price`, `discount`, `currency`
FROM `shop_order`
LEFT JOIN `shop_order_items`
ON shop_order.id = shop_order_items.order_id
WHERE shop_order.id=1;