Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Маршрутизация [2]
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Маршрутизация

Страниц (4): « 1 [2] 3 4 »
 

16. esterio - 13 Августа, 2013 - 12:16:56 - перейти к сообщению
Hapson
На етом форуме не раз обсуждалось. Поищите.

Во первых есть два вида роутинга:
- физическый - файловая система
- логический - конфиг

Также есть их гибриды.

Лично для себя я выбрал логический. Вот старый класс роутинга который я когда-то для себя сделал
http://forum.php.su/topic.php?fo...2&topic=1844
(Добавление)

Okula
Посмотрел Ваш код )))
Много в архитектури лишнего. Например Интерфейс Mysqli. ну в общем если интересно могу виразить свое феее в ЛС
17. DeepVarvar - 13 Августа, 2013 - 13:11:08 - перейти к сообщению
digi пишет:
самый удобочитаемый для человека вид это yaml
Не соглашусь. Для меня самый удобный это JSON с комментариями.
18. armancho7777777 - 13 Августа, 2013 - 13:38:37 - перейти к сообщению
DeepVarvar пишет:
Для меня самый удобный это JSON

Поддерживаю.
19. esterio - 13 Августа, 2013 - 14:45:04 - перейти к сообщению
DeepVarvar пишет:
Для меня самый удобный это JSON с комментариями.

+1
20. digi - 13 Августа, 2013 - 17:05:05 - перейти к сообщению
DeepVarvar

покажи пример равнозначных роутингов на ямле и джейсоне ;) с комментариями конечно Улыбка
21. armancho7777777 - 13 Августа, 2013 - 17:14:27 - перейти к сообщению
digi пишет:
покажи пример равнозначных роутингов на ямле и джейсоне ;) с комментариями конечно Улыбка

digi, мы тут Все уже прекрасно знаем, что Вы "боготворите" symfony, так что это будет бесполезно ))
22. caballero - 13 Августа, 2013 - 17:42:23 - перейти к сообщению
Цитата:
покажи пример равнозначных роутингов на ямле и джейсоне

лично у меня роутинг в PHP. Точно не равнозначно с портянками конфигурационноых файлов
23. digi - 13 Августа, 2013 - 18:28:05 - перейти к сообщению
armancho7777777, форматы ямл и джейсон к симфони никакого отношения не имеют Улыбка они были созданы разными командами в разное время и для разных целей Улыбка а вот то, что некоторые вещи удобно в некоторых местах использовать - ну да, есть такое Улыбка
24. armancho7777777 - 13 Августа, 2013 - 18:31:15 - перейти к сообщению
digi, я думаю Вы прекрасно поняли что я имел в виду.
25. Hapson - 13 Августа, 2013 - 18:35:40 - перейти к сообщению
Okula
Я пробую разобраться в вашем коде. Мне пока сложно читать чужой код.
У себя все понимаю, что написал. А вот чужое понимать трудно пока.
(Добавление)
caballero пишет:
лично у меня все просто
все адресные строки которые не содержат ? & . и т.д. предназначены для роутера
RewriteRule ^(\/index\.php.{0,}|[-#a-zA-Z0-9\/_]+)$ /index.php [L,QSA]

далее в каждом модуле есть предопределенная функция которая вполняет роутинг для кажлого модуля

это функция распознает "свои" маршруты и выполняет чего надо с этим выполнять)
если это не "свой" маршрут выполняется роутинг для следующего модуля


Вот видите как у вас - для вас все просто Улыбка
Мне бы вот еще понять принцип работы регулярок. Как там происходит подмены и распознавания нужного...
(Добавление)
esterio
esterio пишет:
Во первых есть два вида роутинга:
- физическый - файловая система
- логический - конфиг

Также есть их гибриды.

Вот это вообще темный лес...
Что есть физический и логический? Можно в двух словах их принципы действия?

PS
И как вообще лучше делать. Через $_GET, ну типа
http://exemple[dot]com/index.php?user=register
или делать закос под ЧПУ
http://exemple[dot]com/user/register
26. Okula - 13 Августа, 2013 - 18:45:10 - перейти к сообщению
Hapson, ну если уж с регулярками всё плохо то тогда не стоит писать свой роутер. Там регулярки будут везде и всюду и если ты не научишься с ними работать ничего толкового сделать не выйдет.
27. caballero - 13 Августа, 2013 - 18:45:45 - перейти к сообщению
Цитата:
Мне бы вот еще понять принцип работы регулярок. Как там происходит подмены и распознавания нужного...

я в них тоже не особо разьираюсь
в данном случсе одна простая регулярка которая считает что если нет
в адресе имени файла & или ? то это SEO адрес который требует маршрутизации

а дальше я разбираю его средствами PHP без всяких регулярок
потому как каждый модуль знает какой формат "его"
(Добавление)
Цитата:
ну если уж с регулярками всё плохо то тогда не стоит писать свой роутер. Там регулярки будут везде и всюду и если ты не научишься с ними работать ничего толкового сделать не выйдет.


не вижу связи меду роутером и регулярками
завист от реализации
28. Hapson - 13 Августа, 2013 - 18:49:22 - перейти к сообщению
Okula
Да нет, я понимаю регулярки (их синтаксис). Мне пока непонятно, как они работают в скриптах. То есть как происходит выявление нужных параметров в адресной строке.
Ну как бы это сказать...
Я понимаю как работает switch...case. Если index.php?user=register, то это значит нужно обратиться к модулю user и у него выполнить некое действие register.
А вот когда смотрю и вижу в массивах кучу регулярок, то мне вот не совсем понятно, как они работают.
Как-то так...
(Добавление)
caballero
Ну у вас понятно, это что-то типа

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

Так ведь?
А вот дальше. Как это происходит в самом приложении.
У вас для каждого модуля записаны конфиги с его (модуля) параметрами? Точнее не параметрами, а запросами наверное, которые принимает этот модуль.
И так для каждого модуля, а если ни один модуль ничего своего не нашел, тогда 404?
(Добавление)
caballero
То есть по сути, есть один общий роутер (или маршрутизатор...) и у каждого модуля есть собственный роутер, так?
29. Ch_chov - 13 Августа, 2013 - 19:12:25 - перейти к сообщению
Сделайте таблицу соответствия урлов и контроллеров. Не важно в каком формате. И находите по этой табице нужный контроллер.
30. Hapson - 13 Августа, 2013 - 19:17:35 - перейти к сообщению
Ch_chov пишет:
Сделайте таблицу соответствия урлов и контроллеров. Не важно в каком формате. И находите по этой табице нужный контроллер.

У меня уже была мысль сделать таблицу в БД. Собственно и сейчас уже есть табличка. В ней хранится имя модуля, его позиция и переключатель активации (0 и 1). То есть в шаблоне у меня грубо три места под модули. В каждом месте прописано:
ModController::load("top")
ModController::load("content")
ModController::load("left")
То есть три раза вызывается метод load? который смотри по таблице - какие модули включены в позиции top, left, content

PS но это временно. Глупо при каждом обновлении страницы лезть в БД. Тем более позиции модулей могут не меняться месяцами, годами...

 

Powered by ExBB FM 1.0 RC1