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 структурой?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Нужно разобраться в методах класса (экшен)
shum0531
Отправлено: 19 Июля, 2013 - 10:34:37
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




модель MVC у меня такая http://habrahabr[dot]ru/post/150267/ , единственное в роутере у меня существует проверка (после подключения контроллера) существования метода, если нет, загружается по умолчанию 'index'.
Проблема в следующем:
запрос - website/news/{какой то экшен}
Вопрос: Как поступать когда экшен динамический? К примеру переход на под страницу.
Или website/search/{строка поиска} ?

(Отредактировано автором: 19 Июля, 2013 - 10:56:59)

 
 Top
Zuldek
Отправлено: 19 Июля, 2013 - 10:47:20
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 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 или что-то подобное, то это неверно настроенные перенаправления или некорректная (если конечно так не было задумано) логика роутера.

(Отредактировано автором: 19 Июля, 2013 - 10:51:25)

 
 Top
shum0531
Отправлено: 19 Июля, 2013 - 10:54:16
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Zuldek пишет:
не правильно думать об URL

я думаю не о урл а какие параметры в нем передавать, или даже вернее что из него брать.

Если я Вас правильно понял какие методы грузить должен решать контроллер?
В моем случае в роутере происходит поиск метода.
А контроллер в website/news/1/2/4 -"news"

(Отредактировано автором: 19 Июля, 2013 - 10:55:41)

 
 Top
Zuldek
Отправлено: 19 Июля, 2013 - 10:57:35
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Все зависит от вашего "феншуя" и реализации паттерна.
Традиционно задача роутера именно вызвать контроллер и передать ему параметры запроса.
(Добавление)
Соответственно, метод news должен получить параметры "/1/2/4" и обработать. Что, собственно, вам не ясно?

(Отредактировано автором: 19 Июля, 2013 - 11:03:33)

 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июля, 2013 - 11:20:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




shum0531 пишет:
модель MVC у меня такая http://habrahabr[dot]ru/post/150267/
Хосспаде! Опять эта статья! Не юзай это в боевом проекте!!!
 
 Top
shum0531
Отправлено: 19 Июля, 2013 - 11:32:56
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




DeepVarvar пишет:
Хосспаде! Опять эта статья! Не юзай это в боевом проекте!!!

Почему? Не понял
Это всего лишь каркас. Как не крути при работе с MVC все равно к подобному приедешь.
И вообще мой первый был в процедурном стиле, а логика вся та же. И даже проще. Но я двигаться дальше, пытаюсь понять ООП, вот сижу юзаю. Пока колосального преимущество не нашел. Но это другой вопрос.
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июля, 2013 - 11:47:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




shum0531 пишет:
все равно к подобному приедешь
К чему? К тому что в статье? Не смеши..
shum0531 пишет:
Пока колосального преимущество не нашел. Но это другой вопрос.
Вот именно.
Я тоже пытался тут на форуме объяснять ООП в статьях простыми словами.
Увы - меня закидали помидорами.
И я полностью согласен с этими помидорами.
Потому, что невозможно объяснить за один раз все, что нужно, да еще и так, чтобы поняли.
 
 Top
Zuldek
Отправлено: 19 Июля, 2013 - 11:53:47
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)





Почему-то MVC с ООП в умах намертво и неразделимо. Даже там где нужна быстрая и простая процедурная логика создаются объекты, наследуя этажные классы

(Отредактировано автором: 19 Июля, 2013 - 12:53:58)

 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июля, 2013 - 11:54:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Zuldek пишет:
Традиционно задача роутера
В той статье это конструкция switch case, какой там роутер?
И тут shum0531 спрашивает как отловить динамические параметры.
Я сперва подумал рассказать ему про __call() но куда там..
 
 Top
Zuldek
Отправлено: 19 Июля, 2013 - 11:56:08
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Цитата:
В той статье это конструкция switch case, какой там роутер?

1. Не видел никакой статьи. На момент чтения поста ссылка была либо удалена модером либо незапостена тс.
2. В статье конструкция с switch приводится в качестве пример того, "как раньше все делали", хотя так делал, по-видимому, только автор и его последователи.
 
 Top
shum0531
Отправлено: 19 Июля, 2013 - 11:56:29
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




[quote=DeepVarvar]
shum0531 пишет:
Потому, что невозможно объяснить за один раз все, что нужно, да еще и так, чтобы поняли.

Все просто! ООП нужно для работы в команде, не надо вникать как работает модуль коллеги. Знаешь интерфейс, расширил модуль в 2 строки и вуаля. В итоге каждая голова в команде загружена только своей задачей - удобно.
Если же ты кодишь один тогда тебе это не к чему. До поры до времени. Улыбка
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июля, 2013 - 12:18:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Неверно. Противоречие на противоречии.
Вот я один писал свой велосипед, и что? Я писал его процедурно?
И нет и да. Там где надо были объекты, а где надо - функции.
(Добавление)
ООП не для командной работы - это точно.
 
 Top
shum0531
Отправлено: 19 Июля, 2013 - 12:22:02
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




DeepVarvar Либо Вы меня не поняли либо я Вас. Я говорю о ООП и MVC как основа проектирования
 
 Top
Zuldek
Отправлено: 19 Июля, 2013 - 12:22:10
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Реализация автора статьи была применена для сайта визитки. Уже на этапе роутинга запроса для такого простого проекта создаются объекты классов и прочее что совершенно для него не требуется, тем более, — реализация на основе перегрузок методов. Простейшее перенаправление параметров запроса контроллеру, только разумеется не из самого урла, а в случае с последними проектами, — запрос их сигнатур из БД и перенаправление обработки в контроллер. И пока ни разу конкретно в этих проектах не сталкивался с необходимостью перетаскивать логику роутинга на объектную основу, а они по сложности далеко интереснее сайта-визитки. Касательно пухлых командных проектов, — естественно применяется роутинг заложенный в фреймворк.
В реализации же автора статьи показаны процедуры обернутые в классы без какого-либо выигрыша в производительности или удобстве, хотя и "похоже" на то, как роутинг реализуется на самом деле на ООП в популярных фреймворках, но стоило-ли того написание статьи?

(Отредактировано автором: 19 Июля, 2013 - 12:25:37)

 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июля, 2013 - 12:25:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




shum0531 пишет:
MVC как основа проектирования
никогда мвц не было основой
(Добавление)
shum0531, два человека тебе говорят что дело - какашка.
Чего тебе еще в доказательство надо?

Объяснений "почему и как сделать правильно"?
Это очень долго, ковыряй пока как умеешь, все само придет со временем.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB