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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как работать с MVC структурой?
Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
модель MVC у меня такая http://habrahabr[dot]ru/post/150267/ , единственное в роутере у меня существует проверка (после подключения контроллера) существования метода, если нет, загружается по умолчанию 'index'.
Проблема в следующем:
запрос - website/news/{какой то экшен}
Вопрос: Как поступать когда экшен динамический? К примеру переход на под страницу.
Или website/search/{строка поиска} ?
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Соответственно, ваш роутер должен уметь вызвать правильный контроллер, а остальную часть url передать контроллеру в качестве параметров.
при этом лучше вообще не думать об URL
Он может быть хоть:
website/1/2/100/sometheing-else/ search/qwertyuiopa
Важно, чтобы реально запрос перенаправлялся на website/index.php?параметры
или в ту точку, входа, которая принята у вас, чтобы ваш роутер корректно разобрал параметры и вызвал нужные контроллеры.
Иными словами, в случае с вашим примером, — без разницы какой у вас {какой то экшен}, его все равно получит контроллер news.inc.php и обработает. Если при запросе website/news/1/2/4 ваш роутер пытается искать контроллер с именем 4 или что-то подобное, то это неверно настроенные перенаправления или некорректная (если конечно так не было задумано) логика роутера.
Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
Zuldek пишет:
не правильно думать об URL
я думаю не о урл а какие параметры в нем передавать, или даже вернее что из него брать.
Если я Вас правильно понял какие методы грузить должен решать контроллер?
В моем случае в роутере происходит поиск метода.
А контроллер в website/news/1/2/4 -"news"
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Все зависит от вашего "феншуя" и реализации паттерна.
Традиционно задача роутера именно вызвать контроллер и передать ему параметры запроса. (Добавление)
Соответственно, метод news должен получить параметры "/1/2/4" и обработать. Что, собственно, вам не ясно?
Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
DeepVarvar пишет:
Хосспаде! Опять эта статья! Не юзай это в боевом проекте!!!
Почему?
Это всего лишь каркас. Как не крути при работе с MVC все равно к подобному приедешь.
И вообще мой первый был в процедурном стиле, а логика вся та же. И даже проще. Но я двигаться дальше, пытаюсь понять ООП, вот сижу юзаю. Пока колосального преимущество не нашел. Но это другой вопрос.
DeepVarvar
Отправлено: 19 Июля, 2013 - 11:47:06
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
shum0531 пишет:
все равно к подобному приедешь
К чему? К тому что в статье? Не смеши..
shum0531 пишет:
Пока колосального преимущество не нашел. Но это другой вопрос.
Вот именно.
Я тоже пытался тут на форуме объяснять ООП в статьях простыми словами.
Увы - меня закидали помидорами.
И я полностью согласен с этими помидорами.
Потому, что невозможно объяснить за один раз все, что нужно, да еще и так, чтобы поняли.
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Zuldek пишет:
Традиционно задача роутера
В той статье это конструкция switch case, какой там роутер?
И тут shum0531 спрашивает как отловить динамические параметры.
Я сперва подумал рассказать ему про __call() но куда там..
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Цитата:
В той статье это конструкция switch case, какой там роутер?
1. Не видел никакой статьи. На момент чтения поста ссылка была либо удалена модером либо незапостена тс.
2. В статье конструкция с switch приводится в качестве пример того, "как раньше все делали", хотя так делал, по-видимому, только автор и его последователи.
shum0531
Отправлено: 19 Июля, 2013 - 11:56:29
Гость
Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
[quote=DeepVarvar]
shum0531 пишет:
Потому, что невозможно объяснить за один раз все, что нужно, да еще и так, чтобы поняли.
Все просто! ООП нужно для работы в команде, не надо вникать как работает модуль коллеги. Знаешь интерфейс, расширил модуль в 2 строки и вуаля. В итоге каждая голова в команде загружена только своей задачей - удобно.
Если же ты кодишь один тогда тебе это не к чему. До поры до времени.
DeepVarvar
Отправлено: 19 Июля, 2013 - 12:18:47
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Неверно. Противоречие на противоречии.
Вот я один писал свой велосипед, и что? Я писал его процедурно?
И нет и да. Там где надо были объекты, а где надо - функции. (Добавление)
ООП не для командной работы - это точно.
Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
DeepVarvar Либо Вы меня не поняли либо я Вас. Я говорю о ООП и MVC как основа проектирования
Zuldek
Отправлено: 19 Июля, 2013 - 12:22:10
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Реализация автора статьи была применена для сайта визитки. Уже на этапе роутинга запроса для такого простого проекта создаются объекты классов и прочее что совершенно для него не требуется, тем более, — реализация на основе перегрузок методов. Простейшее перенаправление параметров запроса контроллеру, только разумеется не из самого урла, а в случае с последними проектами, — запрос их сигнатур из БД и перенаправление обработки в контроллер. И пока ни разу конкретно в этих проектах не сталкивался с необходимостью перетаскивать логику роутинга на объектную основу, а они по сложности далеко интереснее сайта-визитки. Касательно пухлых командных проектов, — естественно применяется роутинг заложенный в фреймворк.
В реализации же автора статьи показаны процедуры обернутые в классы без какого-либо выигрыша в производительности или удобстве, хотя и "похоже" на то, как роутинг реализуется на самом деле на ООП в популярных фреймворках, но стоило-ли того написание статьи?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.