Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Наконец то решил выслушать критику. поэтому прошу посмотреть на реализацию моего роутера. Хотелось бы узнать:
1. Чтобы бы вы сделали иначе
2. Какие ошибки
3. Что доработать
4. Удобство в пользовании
Здесь используется метод add, где 1 параметр - часть URL, а все остальное это элементы массива которые мы задали ранее.
Например $ neusRoute-> add ('category_ {id}', 'category', 'index') означает, что:
для части URL category_ {id} результатом будет array ('controller' => 'category', 'action' => 'index')
В параметре URL можно использовать переменные с помощью "{var}".
Метод assert задает правила для переменных в URL, и представляет собой регулярное выражение.Наприклад: assert(array(
'id' => '\d+',
'm_id' => '\d+'
));
Указывает, что часть URL category_{id} и {m_id} может содержать переменные только числа.
Метод set задает дополнительные параметры. Например set ('access_level', 100); - задает параметры access_level , который равен 100.
Теперь например наш URL следующий: http://example.com/category_18/123
Тогда после разбора URL получается массив:
Да там кроме преобразования, есть еще определения браузера, предпочитаемого языка, является ли запрос ПОСТ-ом или АЯКС и т.д. (Добавление)
И еще ето сделано ен спроста, У меня УРЛ может быть например http://example.com/ru/category_18.
Таким образом я делаю с строкой то чно мне нужно, например - узнаю что язык русский и забираю елмент 'ru'.
caballero
Отправлено: 08 Декабря, 2012 - 20:48:16
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Да там кроме преобразования, есть еще определения браузера, предпочитаемого языка, является ли запрос ПОСТ-ом или АЯКС и т.д.
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
caballero пишет:
а зачем это роутеру?
Так и я о том-же, есть отдельной компонент request который етим занимаеться, но если чесно я уже думаю что все-таки стоит добавить преоброзование в роутер.
П.С. спасибо за отзыв
caballero
Отправлено: 08 Декабря, 2012 - 20:53:06
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Так и я о том-же, есть отдельной компонент request который етим занимаеться, но если чесно я уже думаю что все-таки стоит добавить преоброзование в роутер.
значит ты не о том же. Я о том что это вообще не функции роутера должны быть, а ты еще туда хочешь накидать функционала
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Значит не правильно обьяснил. Уже есть другой класс который етим занимаеться.
А именно
Цитата:
Да там кроме преобразования, есть еще определения браузера, предпочитаемого языка, является ли запрос ПОСТ-ом или АЯКС и т.д.
И я не собираюсь все ето в роутер сувать. Думаю лиш что преобразоване из http://example[dot]com/category_18/123 в array('category_18', '123') стоит все-таки засунуть в роутер и не более.
caballero
Отправлено: 08 Декабря, 2012 - 20:57:14
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Тут столько строк для того чтоб класс был менее зависим, конифиг например можно сделать чтоб тянул с БД или с файла какого-нить. А что Вы предлагаете использовать switch..case
avtor.fox
Отправлено: 08 Декабря, 2012 - 21:13:51
Постоянный участник
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Помог: 50 раз(а)
esterio ну и жесть Вы понаписали.
Запомните, выучив несколько строк кода из книги и сразу их запостив в свой "проект", лучше от этого не будет. Слишком всё сложно. Там натыкано, здесь накидано, ничего непонятно, а на выходе получаем массив с определением "контроллера" и скармливаемая "гет" строка. Ну и намудрили.
Но это Ваше видение. Всё равно ж Вам переписывать, не нам
caballero
Отправлено: 08 Декабря, 2012 - 21:14:24
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
роутер судя по всему для новостей. что такого сложного там надо роутить чтобы писать такие конструкции. а если там еще картинки блоги товары. как ты себе представляешь чтобы другой разработчик в этом разбирался (Добавление)
вообще, роутеры как правило нужны для ЧПУ. адресоватся к контроллеру можно просто задав имя контроллера и экшена в урле, что многое фреймворки и делают
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
avtor.fox пишет:
Запомните, выучив несколько строк кода из книги и сразу их запостив в свой "проект"
Все лично мой код, никакого копипаста.
caballero пишет:
роутер судя по всему для новостей. что такого сложного там надо роутить чтобы писать такие конструкции
Ето пример, а служет он далеко не для таких целей.
caballero пишет:
вообще, роутеры как правило нужны для ЧПУ. адресоватся к контроллеру можно просто задав имя контроллера и экшена в урле, что многое фреймворки и делают
Он и предназначен для ЧПУ. И являеться частю моего фреймворка(велосипеда). От даной затее отказался в связи з задачами для которих такой подход не подошел бы.
avtor.fox
Отправлено: 09 Декабря, 2012 - 05:44:23
Постоянный участник
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Помог: 50 раз(а)
esterio пишет:
такой подход не подошел бы
Ды я боюсь представить куда бы он подошёл.
esterio пишет:
Все лично мой код, никакого копипаста.
Я не говорил что это копипаст чужого кода.
И caballero прав. Роутер нужен в основном для ЧПУ и вызова нужного контроллера. А Вам с таким подходом к задаче нужно идти в 1С работать, там любят таких
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.