Comments 37
UFO just landed and posted this here
Что только не делают битриксоиды, лишь бы не писать нормальный код.
Роутер — одна из самых простых частей приложения, особенно в парадигме MVC: подай на вход Request, на выходе получи Route, как некий внутренний путь по приложению, и решай, что с этим путем делать. Ну ОК, еще обработай исключение «Соответствие не найдено», превратив его в ответ 404.
Чтобы не заморачиваться, создай конфиг роутинга в виде массива, где ключами будут шаблоны, на соответствие которым проверяется Request, а значениями — функции, которые получат этот Request, группы совпавшие в шаблоне, замкнут на себя контекст и вернут Route.
Всё!
Что все эти люди делают с этой простейшей концепцией? Зачем? Ради чего вы вообще пишете вот такой код?
Роутер — одна из самых простых частей приложения, особенно в парадигме MVC: подай на вход Request, на выходе получи Route, как некий внутренний путь по приложению, и решай, что с этим путем делать. Ну ОК, еще обработай исключение «Соответствие не найдено», превратив его в ответ 404.
Чтобы не заморачиваться, создай конфиг роутинга в виде массива, где ключами будут шаблоны, на соответствие которым проверяется Request, а значениями — функции, которые получат этот Request, группы совпавшие в шаблоне, замкнут на себя контекст и вернут Route.
Всё!
Что все эти люди делают с этой простейшей концепцией? Зачем? Ради чего вы вообще пишете вот такой код?
+1
В Битриксе UrlRewrite — это статичный конфиг, в котором кроме копания ручками ещё автоматически вносятся роуты от виджетов, поэтому никаких функций там нет, при его архитектуре они там не нужны.
+1
Вы сейчас прослушали миниатюру «Битрикс: нам не нужно нормально программировать, потому что у нас такая вот архитектура»
0
Вы сейчас прослушали миниатюру «Есть только MVC и PSR пророк его, всё остальное от лукавого».
-2
MVC — нет, конечно. Архитектур много, все они разные. Нет ничего плохого в чем-то, что не вписывается в прокрустово ложе MVC.
PSR — да. Если вы не уважаете стандарты, принятые сообществом — вон из профессии.
PSR — да. Если вы не уважаете стандарты, принятые сообществом — вон из профессии.
-2
А при чем тут уважение стандарта и его использование? И что еще за «принятие сообществом» такое? Где то было совещание PHP разработчиков, на котором подписали договор о безоговорочном следовании PSR всеми участниками сообщества, иначи им запрещается использовать в своей работе данный ЯП?
-2
Где то было совещание PHP разработчиков
Да, конечно.
Вот например: http://www.php-fig.org/psr/psr-4/meta/#6-votes
Если вы не считаете этих людей авторитетами для себя, у меня для вас плохие новости — вы за бортом современного PHP.
0
А где там речь об исключение из профессии тех, кто не придерживается PSR?
При чем здесь то, кем я для себя считаю этих людей? Не надо подменять понятия.
Какой ужас, модное, современное, молодежное проходит мимо меня!
Если вы не считаете этих людей авторитетами для себя
При чем здесь то, кем я для себя считаю этих людей? Не надо подменять понятия.
вы за бортом современного PHP
Какой ужас, модное, современное, молодежное проходит мимо меня!
0
Потому что в Битриксе нет единой точки входа, и поэтому роутер не всегда подключается, а только когда обращение идет не к существующему файлу.
А в чем сложность собственно? Алгоритм:
1. Получили URI.
2. Привели соответствие с шаблонами.
3. Подключили нужный файл, либо 404 выплюнули.
По поводу конфига: да, вероятно вы правы, стоит добавить возможность добавить массово конфиг.
А теперь по поводу кода: чем он вам не по нраву?
А в чем сложность собственно? Алгоритм:
1. Получили URI.
2. Привели соответствие с шаблонами.
3. Подключили нужный файл, либо 404 выплюнули.
По поводу конфига: да, вероятно вы правы, стоит добавить возможность добавить массово конфиг.
А теперь по поводу кода: чем он вам не по нраву?
0
Он не семантичен. Что такое run()? Зачем нужен end()?
Не проще ли:
Не проще ли:
try {
$request = ...;
$route = (new Router(
new Config(ROUTE_CONFIG_PATH)
))->processRequest($request);
}
0
run — проверка шаблона на соответствие (если приятней глазу читайте как process).
По сути весь этот велосипед строился ради runRecursive.
end — кидает на Битриксовый обработчик, если в текущем нет нужных правил, т.к. данный роутер вспомогательный, стандартные компоненты вряд ли будут ему следовать.
Request в вашем примере, в данному случае это URI, по нему идет маршрутизация, другие данные не нужны.
По сути весь этот велосипед строился ради runRecursive.
end — кидает на Битриксовый обработчик, если в текущем нет нужных правил, т.к. данный роутер вспомогательный, стандартные компоненты вряд ли будут ему следовать.
Request в вашем примере, в данному случае это URI, по нему идет маршрутизация, другие данные не нужны.
0
А битрикс не различает GET, POST, PUT, DELETE?
0
Маршрутизация основана только на URI, методы в счет не идут. Остальной обработкой занимаются либо сами страницы, либо компоненты в них подключенные.
В Битрикс нет «стандартного» MVC (контроллер, модель, представление). После роутинга, подключается страница, а не действие контроллера.
В Битрикс нет «стандартного» MVC (контроллер, модель, представление). После роутинга, подключается страница, а не действие контроллера.
0
Тобишь внутри страницы еще один роутер? А почему тогда это не реализовать на уровне веб-сервера?
0
А что мешало взять любой готовый пакет для роутинга и подключить его?
Тесты это круто, конечно, но чуствую я, «эра» Juggernaut начинает подходить к концу.
мне полюбился TDD, так что рефакторинг остановился до тех пор пока не напишу тесты
Тесты это круто, конечно, но чуствую я, «эра» Juggernaut начинает подходить к концу.
0
Вы решили писать «замену» битрикса с целью прокачки скилла?
0
Атата! Не меняйте смысл слов, Вы спросили про роутинг, а не Juggernaut)))
На самом деле роутер писался глядя в код FastRoute, а не использовал я его из-за неполного понимая open-source лицензий.
А по поводу прокачки скилла: juggernaut в некоторых местах рефакторит битрикс, но в некоторых что-то привносит свое. Он создан для удобства, если только для моего, то так тому и быть, меньше париться с документацией)
На самом деле роутер писался глядя в код FastRoute, а не использовал я его из-за неполного понимая open-source лицензий.
А по поводу прокачки скилла: juggernaut в некоторых местах рефакторит битрикс, но в некоторых что-то привносит свое. Он создан для удобства, если только для моего, то так тому и быть, меньше париться с документацией)
0
Ну вы же предлагаете использовать данный роутер в Juggernaut?
0
UFO just landed and posted this here
>include /urlRewrite.php
Там же вроде не camelCase…
>include dbconn.php
Там вроде не только база, а и другие настройки…
Ваш роутер подтягивает битриксовские правила роутинга?
>Что все эти люди делают с этой простейшей концепцией? Зачем? Ради чего вы вообще пишете вот такой код?
А я вообще не пишу код роутинга, он в нгинксе. :)
Там же вроде не camelCase…
>include dbconn.php
Там вроде не только база, а и другие настройки…
Ваш роутер подтягивает битриксовские правила роутинга?
>Что все эти люди делают с этой простейшей концепцией? Зачем? Ради чего вы вообще пишете вот такой код?
А я вообще не пишу код роутинга, он в нгинксе. :)
0
Там же вроде не camelCase…
В статье: что-то вроде псевдокода
Там вроде не только база, а и другие настройки…
И опять вроде))) В основном там база, да и из названия это следует. Помимо базы также присутствуют константы кеша и еще парочку непонятных/неизвестных мне. Но в любом случае это не должно подключаться до роутинга, с учетом того, что данные константы вряд ли там используются (не факт)
Ваш роутер подтягивает битриксовские правила роутинга?
Если в роутере не сработало ни одно из правил, то далее уже подключается стандартный роутинг
0
>И опять вроде)))
Я с Битриксом 2 года не работаю уже, поэтому могу ошибаться, поэтому вроде. :)
>В основном там база.
Вчера искал исходник с работы по Битриксу, ради интереса залез в дбконн, там много всего, короме базы. Для базы вроде только адресс сервера, логин, пароль, база.
>да и из названия это следует
Название неочевидное… :)
>это не должно подключаться до роутинга
http://dev.1c-bitrix.ru/api_help/main/general/pageplan.php
>Если в роутере не сработало ни одно из правил, то далее уже подключается стандартный роутинг
А в конфиг вашего роутинга пишутся параметры с вызуального редактирования параметров комплексного компонента?
Я с Битриксом 2 года не работаю уже, поэтому могу ошибаться, поэтому вроде. :)
>В основном там база.
Вчера искал исходник с работы по Битриксу, ради интереса залез в дбконн, там много всего, короме базы. Для базы вроде только адресс сервера, логин, пароль, база.
>да и из названия это следует
Название неочевидное… :)
>это не должно подключаться до роутинга
http://dev.1c-bitrix.ru/api_help/main/general/pageplan.php
>Если в роутере не сработало ни одно из правил, то далее уже подключается стандартный роутинг
А в конфиг вашего роутинга пишутся параметры с вызуального редактирования параметров комплексного компонента?
0
http://dev.1c-bitrix.ru/api_help/main/general/pageplan.php
Знаю такую страницу, только не понимаю к чему это?
А в конфиг вашего роутинга пишутся параметры с вызуального редактирования параметров комплексного компонента?
Нет они пишутся в файл '/urlrewrite.php' (не путать с 'bitrix/urlrewrite.php' который отвечает за маршрутизацию), не вижу смысла подключать его, если в дальнейшем (если нет подходящих правил) все равно маршрутизацией будет заниматься битирксовый роутер
0
>Знаю такую страницу, только не понимаю к чему это?
Почему это все подключается…
В том файле не только БД ну и остальное.
>Нет они пишутся в файл '/urlrewrite.php' (не путать с 'bitrix/urlrewrite.php' который отвечает за маршрутизацию), не вижу смысла подключать его, если в дальнейшем (если нет подходящих правил) все равно маршрутизацией будет заниматься битирксовый роутер
Боже, роуты пишутся вручную или с редактора параметров компонента?
Почему это все подключается…
В том файле не только БД ну и остальное.
>Нет они пишутся в файл '/urlrewrite.php' (не путать с 'bitrix/urlrewrite.php' который отвечает за маршрутизацию), не вижу смысла подключать его, если в дальнейшем (если нет подходящих правил) все равно маршрутизацией будет заниматься битирксовый роутер
Боже, роуты пишутся вручную или с редактора параметров компонента?
0
Почему это все подключается… В том файле не только БД ну и остальное.
Вообще нет. В том файле определяются только константы, а страница грузиться начинает после подключения /bitrix/header.php или файла пролога (собственно после маршрутизации).
Боже, роуты пишутся вручную или с редактора параметров компонента?
Вы сначала мозги включите, а потом божечку вспоминайте. У Битрикса свой формат роутинга (маршрутов, подстановки параметров, ...), и опять напишу, что не вижу смысла писать, потому как затем подключается битриксовый роутер, а в данный маршрутизации писать нужно ручками
0
Битрикс ужасен… И ужасен во всем за исключением того что делает его битриксом (сертификация ФСТЭК и прочие необходимые пряники). Чем меньше в сайте битрикса тем лучше для сайта… Тем лучше для его овнера… Тем лучше для сапорта и криэйтеров проекта… А это «чем меньше» достигается связкой Silex/Slim/Lumen плюс API Bitrix плюс любимый JS+CSS фреймворк. Да это похоже на «мерседес» замаскированный под костыли… Но многолетний опыт разработки на этой «платформе» порой приводит к таким вот странным решениям…
+1
Sign up to leave a comment.
Bitrix — UrlRewrite (feat. Juggernaut)