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 :: Урок №19 - Немного о паттернах [7]

 PHP.SU

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


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

> Описание: Архитектура MVC своими руками.
esterio
Отправлено: 09 Октября, 2013 - 11:33:24
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Урок не смотрел, но все же
1. запуск контролера
2. контролер дергает модели по данные
3. контроллер складивает данные в массив
4. контролле визивает рендеринг вюхы с данными массива
5. во вюхе могут быть операторы представления (for, foreach, if, else)
6. контролер выводит отрендерену вюху

Как-то так
 
 Top
spirit
Отправлено: 09 Октября, 2013 - 17:23:42
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Март 2012  
Откуда: Россия, Пермь


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




esterio, а в чем смысл рендеринга? почему просто через инклюды нельзя?

(Отредактировано автором: 09 Октября, 2013 - 17:24:38)

 
 Top
esterio
Отправлено: 09 Октября, 2013 - 17:26:51
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




а что такое по вашему рендеринг?
В большинстве случаев ето
PHP:
скопировать код в буфер обмена
  1. function template($template)
  2. {
  3.     ob_start();
  4.     include($template);
  5.     return ob_get_clean();
  6. }


А в котролере
PHP:
скопировать код в буфер обмена
  1. public function indexAction()
  2. {
  3.     echo template('index.php');
  4. }


Как-то так.

П.С. ето всего-лишь пример

(Отредактировано автором: 09 Октября, 2013 - 17:29:41)

 
 Top
EuGen Администратор
Отправлено: 09 Октября, 2013 - 17:27:52
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




spirit
Смысл Вашего вопроса - ровно в том же, как это было бы в случае вопроса "Почему вообще MVC? Разве нельзя делать напрямую, вставляя PHP в HTML?". Можно. MVC - это идея и представление (view) - его часть. Использовать это или нет - вопрос другой.
esterio
Далеко не всегда это так. В случае, если используется шаблонизатор - рендеринг есть отдельный процесс пост-обработки этого шаблона для получения готового результата.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
esterio
Отправлено: 09 Октября, 2013 - 17:30:51
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




EuGen пишет:
Далеко не всегда это так. В случае, если используется шаблонизатор - рендеринг есть отдельный процесс пост-обработки этого шаблона для получения готового результата.

Согласен, но многие фреймворки используют етот вариант или имеют оберткы над шаблонизаторами
 
 Top
spirit
Отправлено: 09 Октября, 2013 - 19:55:50
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Март 2012  
Откуда: Россия, Пермь


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




EuGen, воот, т.е. рендеринг шаблона это особенность MVC!?

Еще вопрос по поводу адресов. Читал-читал посты влома, так ниче и не понял. Мод_реврайт теперь не работает. Ранние ЧПУ выглядели "/category/1", теперь "/category/view/1"

Для преобразования к старому виду я добавил метод в роутер, который этим занимается. Правильное ли это решение или можно применить более изящноеУлыбка?

PHP:
скопировать код в буфер обмена
  1.  
  2. protected function rewrite($route_array){
  3.        
  4.        
  5.        
  6.        
  7.         if ($route_array[0] == "index.php" or $route_array[0] == ""){
  8.             $route_array[0] = "main";
  9.             $route_array[1] = "main";
  10.                
  11.         }
  12.        
  13.         if ($route_array[0] == "category" && preg_match("/^[0-9]+$/", $route_array[1])){
  14.             $route_array[2] = $route_array[1];
  15.             $route_array[1] = "view";
  16.                
  17.         }
  18.        
  19.         return $route_array;
  20.            
  21.     }
  22.  
  23.  
  24.  

(Отредактировано автором: 09 Октября, 2013 - 22:42:34)

 
 Top
caballero
Отправлено: 09 Октября, 2013 - 20:00:46
Post Id


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


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


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




Цитата:
воот, т.е. рендеринг шаблона это особенность MVC

ренденринг шаблона - это особенность реалиизации шаблонизатора. MVC тут вообще ни при чем.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
EuGen Администратор
Отправлено: 10 Октября, 2013 - 09:54:44
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




spirit пишет:
воот, т.е. рендеринг шаблона это особенность MVC!?

Нет. MVC - это лишь концепция, не следует путать её с одной из её возможных реализаций (см. выше комментарий Леонида)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
spirit
Отправлено: 13 Октября, 2013 - 14:51:43
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Март 2012  
Откуда: Россия, Пермь


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




На мой вопрос по поводу реврайтинга никто не ответит?Недовольство, огорчение
 
 Top
caballero
Отправлено: 13 Октября, 2013 - 14:59:08
Post Id


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


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


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




на вопрос "правильное ли это решение" можно было не ждать ответа несколько дней а просто проверить - работает оно или нет.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (7): « 1 2 3 4 5 6 [7]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Уроки php »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB