Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Стили оформления PHP-шаблонов.  (Прочитано 9255 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« : 13-02-2013 13:36 » 

При изучении PHP MVC фреймворков подметил, что зачастую шаблоны представляют из себя HTML с вставками PHP. Пример:

Код: (PHP)
<?php if (count($zhopas)) { ?>
    <ul class="numlist">
<?php foreach ($zhopas as $zhopa) { ?>
        <li><?php echo \Phalcon\Tag::linkTo('zhopa/show/' . $zhopa->id, $this->escaper->escapeHtml($zhopa->name)); ?></li>
<?php } ?>
    </ul>
<?php } else {
    $this->flash->warning('Жопы кончились.');
} ?>

Рассмотрим другие варианты. Вариант PHP с формированием HTML через echo:

Код: (PHP)
<?php

if (count($zhopas))
{
    echo '
    <ul class="numlist">'
;

    foreach ($zhopas as $zhopa)
        echo '
        <li>'
, \Phalcon\Tag::linkTo('zhopa/show/' . $zhopa->id, $this->escaper->escapeHtml($zhopa->name)), '</li>';

    echo '
    </ul>'
;

}
else
{
    $this->flash->warning('Жопы кончились.');
}
?>

И нечто промежуточное:

Код: (PHP)
<?php

if (count($zhopas))
{
    ?>

    <ul class="numlist"><?php

    foreach ($zhopas as $zhopa)
    {
        ?>

        <li><?php echo \Phalcon\Tag::linkTo('zhopa/show/' . $zhopa->id, $this->escaper->escapeHtml($zhopa->name)); ?></li><?php
    }

    ?>

    </ul><?php

}
else
{
    $this->flash->warning('Жопы кончились.');
}
?>
 


Вопрос: кто какой вариант предпочитает и почему?
« Последнее редактирование: 13-02-2013 13:38 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 13-02-2013 13:44 » 

Мне все равно
В первому - легче искать блоки (уже на этапе сопровождения)
Во втором варианте иногда требуется экранирование кавычек, что не всегда удобно.
Третий вариант  - попытка сделать что-то более-менее форматированное и читабельное.

Но ни один из них не предпочитаю.

Предпочитаю испльзование шаблонизаторов. Тогда view четко отделяется от model, а контроллер управляет полями модели и тегами отображения.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 13-02-2013 13:47 » 

А позволяет ли это обращаться из шаблонов к моделям без ведома контроллера?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 13-02-2013 14:06 » 

А позволяет ли это обращаться из шаблонов к моделям без ведома контроллера?
А это зависит от кривости реализации  MVC или шаблонизатора...
например для шаблонов на smarty хочется, иногда, иметь возможность вставки php кода, но может оказаться проще написать свою реализцию переменной.


Или для Joomla, которая себя позиционирует как MVC, но там это не пахнет, а только воняет.

Цитата
При изучении PHP MVC фреймворков
Это каких?

MVC вещь не однозначная

Если с назанчением контроллера еще более-менее понятно, то втот с view начинаются пляски.

С одной стороны, хочется иметь пассивный view - чтоб только свои теги, а с другой стороны - динамический (зависисмость от погоды и количества выпитого утреннего кофе Улыбаюсь )




Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 13-02-2013 16:11 » 

Смотрел чуть-чуть CakePHP. Помучился одно время с Yii: документация в жутком состоянии, примеры для начинающего изучать MVC слишком туманны. Читал доку по Symfony, но что-то не пошло. С неделю назад наткнулся на Phalcon и, к моему удивлению, нашел: достаточно подробную доку, достаточно подробное описание компонентов, разжеванные примеры.
Phalcon написан на Си и работает как модуль PHP (>=5.3). View выбирается автоматом, но можно также в контроле переназначить. Есть шаблон верхнего уровня, layout, шаблон контрола и «частичные» шаблоны, подключаемые в любой другой шаблон. Также можно отключить рендеринг шаблонов любого уровня. Это что касается PHP View. Есть в Phalcon еще свой собственный шаблонизатор — «Volt». Читал, что и другие шаблонизаторы можно использовать, например, тот же Smarty.

Добавлено через 3 минуты и 59 секунд:
С одной стороны, хочется иметь пассивный view - чтоб только свои теги, а с другой стороны - динамический (зависисмость от погоды и количества выпитого утреннего кофе Улыбаюсь )

Согласен. Первый вариант кошерен при большом HTML-наполнении шаблона. Второй — при изощренной логике, почему-то оказавшейся в шаблоне вместо контрола. Третий как-то размазан. И удаление перевода строки после "?>" однако бесит.

Добавлено через 4 минуты и 4 секунды:
А позволяет ли это обращаться из шаблонов к моделям без ведома контроллера?
А это зависит от кривости реализации  MVC или шаблонизатора...
например для шаблонов на smarty хочется, иногда, иметь возможность вставки php кода, но может оказаться проще написать свою реализцию переменной.

Или для Joomla, которая себя позиционирует как MVC, но там это не пахнет, а только воняет.

Например, нужно вставить в существующий сайт рекламные блоки. Менять при этом контрол считаю некорректным, т.к. к логике сайта реклама никак не относится. Было бы логичным вызвать из шаблона PHP-код, который бы подгрузил нужные данные и вывел бы блок рекламы.
« Последнее редактирование: 13-02-2013 16:26 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines