Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> html в РНР или РНР - в HTML? С какой сотроны разбивать яйцо? 
:(
    Опции темы
Nikitozz
Дата 19.6.2008, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.9.2007
Где: Москва

Репутация: нет
Всего: 0



с помощью этих вставок (первый вариант) действительно сложнее создать по настоящему динамическую страницу...
PM MAIL WWW   Вверх
lukas
Дата 19.6.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: нет
Всего: 15



Nikitozz, это происходит как раз тогда когда логика плохо отделена от верстки... в итоге на практике в начале мне тоже так казалось... но потом понимаешь все... и делаешь первым вариантом... 

вот наглядный маленький пример... 

Код

<? function ajax_button($s)
 {
   return '<input type="button" value='.$s'>';
 }
?>


а используем так:

Код

HTML Текст .... <?=ajax_button('ок')?> ... HTML текст


или так...


Код

<? function ajax_button($s)
 {
   echo '<input type="button" value='.$s'>';
 }
?>


Код

HTML Текст .... <? ajax_button('ок') ?> ... HTML текст


Конешно и то и другое практически одно и тоже.. но в первом варианте мы можем получить текст... а во втором только напечатать... 



--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Sannis
Дата 19.6.2008, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: нет
Всего: 13



Хм, в последних постах, которые про шаблонизаторы, немного скос не в нужную строну пошёл. Если говорить об удобстве вёрстки шаблонов, для верстальшика, а не программиста этой системы, то естесственно его нельзя застравлять писать шаблон с использованием echo, if(){} и т.д. Даже обсуждать нечего, просто спросите у них smile Конкретно, в последнем примере, наверняка они выберут ещё один способ, близкий к XML/XSLT:
Код

<if condition="условие">
    трам-пам-пам
    <ajaxbutton title="Ok">
</if>


Но это всё оффтоп, который даже косвенно не относится к теме smile Разбирается, как лучше написать шаблонизатор, или написать активный шаблон самому(разве что тут нужна удобность, но с шаблонизатором же удобнее ;)), чтобы работало лучше. А на этот вопрос хорошо ответил Feldmarshal: да никак. Относительно времени генерации данных для view вывод занимает настолько мало времени, что об этом можно не задумываться.

P.S. А уход от heredoc в IPB, как мне видится, был связан не со скоростью, а с тем, что в шаблонах стало можно использовать логические выражения, вроде написанного мной выше. Что, кстати говоря, позволило из пункта 4 сделать пункт 3. Хотя не за горами IPB 3.x, в котором как раз реализован вариант 3.


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
Feldmarschall
Дата 20.6.2008, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Sannis, скос пошел только по одной причине - в любом мало-мальски серьёзном приложении ни о каком прямом выводе хтмл из скриптов речь не идет. То есть, первоначальный вопрос имеет весьма ограниченную область применения.

Цитата(Sannis @  19.6.2008,  22:46 Найти цитируемый пост)
А уход от heredoc в IPB, как мне видится, был связан не со скоростью, а с тем, что в шаблонах стало можно использовать логические выражения, вроде написанного мной выше. Что, кстати говоря, позволило из пункта 4 сделать пункт 3

об этом и речь. никто про скорость не говорит.
PM   Вверх
Sannis
Дата 20.6.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: нет
Всего: 13



Да вроде Mal Hack говорил про скорость на первой странице smile А в общем и целом ясно, что тема холиварная(потому как вопрос неопределённый), хоть в разделе по PHP попадаться на глаза не будет.


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
lukas
Дата 21.6.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: нет
Всего: 15



Sannis, хм... сейчас редко встретишь человека который только верстает... помоему хоть что-то из программирования верстальщик должен знать... 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
nerezus
Дата 21.6.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Может хватит обсуждать абстрактные примеры? ))

Почему бы просто не писать нормально и использовать шаблонизатор(да или пхп в роли оного)? )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
IZ@TOP
Дата 21.6.2008, 18:18 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Цитата(nerezus @  21.6.2008,  19:07 Найти цитируемый пост)
Почему бы просто не писать нормально и использовать шаблонизатор(да или пхп в роли оного)? ) 

PHP - по сути, и есть шаблонизатор smile
Я советую PHP in HTML.

Это сообщение отредактировал(а) IZ@TOP - 21.6.2008, 18:19


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Sannis
Дата 21.6.2008, 18:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: нет
Всего: 13



Одно дело "знает", другое дело удобство, скорость и стоимость разработки smile Видимо я слишком требователен, раз зная синтаксис(не путаясь) 7ми языков предпичитаю не использовать в шаблонах(именно тех, которые редактирую) разнообразные <?=...?>.


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
lukas
Дата 21.6.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: нет
Всего: 15



ну например в Битриксе очень удобно сделали разделение логики и верстки..., и никакие шаблонизаторы не нужны, как сказал 
IZ@TOP, шаблонизатором служит сам PHP...

Технология приблизительно такая... Есть компоненты... у компонентов есть шаблоны... у одного компонента может быть сколько угодно шаблонов... вся функциональная часть реализована в тексте component.php, который подключается в каждый шаблон и создает различные массивы, которые и используются для построения шаблона... в итоге ты имеешь всю информацию что тебе нужна и делаешь с ней все что хочешь, при этом не видишь внутренний реализации... все шаблоны реализованы с помощью PHP in HTML, т.к. HTML in PHP при такой системе моразм... 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Elfet
Дата 21.6.2008, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Так и не понял в - чём различие?

Мне всегда трудо отделить html от php.
Я всегда делаю один класс с общими элементами. Пользуюсь <?=$ ?> и всё собираю в буфер. 
Получается довольно удобно.

Добавлено через 3 минуты
Ах да! Самое главное-то забыл! Если использовать <?=$ ?> то можно полноценно пользоваться Zend-ом для вставки тегов и их свойств smile  


--------------------
PM MAIL WWW Skype   Вверх
nerezus
Дата 22.6.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

Я советую PHP in HTML.
 Как шаблонизатор я раньше его и юзал.

Но все же логику и представление как минимум обязательно разделить.

Теперь юзаю смарти: верстальшику он понятнее, сам шаблоны не делаю )

Цитата

и никакие шаблонизаторы не нужны
 Нужны, просто в данном случае PHP используется имено как шаблонизатор. Кстати это его первоначальное историческое применение )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Alix36
Дата 24.6.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 6.11.2006

Репутация: нет
Всего: 3



хм, раньше делал как в 1 варианте, потом стал путаться в коде....
2 вариант-крайне не удобен как программисту так и верстальщику(про тех кто не знает что такое "echo" даже и думать не приходится =( )
3 heredoc , мне не нравится при верстке, птому что я использую дримвьюер, а он такой("$b = <<<HDOC") конструкции не понимает...
4) Однажды сел и написал библиотеку функций html тегов и элементов
Код

function create_iframe($name,$id,$style_string)
{
echo "<iframe name=".$name." id=".$id." style=".$style_string.">";
}

....
некоторое время с ней работал. Потом одним дождливым вечером взял листок бумаги и написал 2 колонки.
Минусы:
1)Верстальщик, не знающий что делает функция, не сможет что-либо править.
2)Нет увереснности что PHP есть разница моего варианта и второго варианта(    
echo '<form action="' . $url . '" method="get">';)А то и мое хуже, еще + лишний вызов функции...
3)Дримвьюер опять ничего не может.
4)Крайне ограниченный HTML, ибо не все параметры Тэгов входят в функциональность функции.
Плюсы
1)Мне все понятно(Жалко что только мне....)
2)Весь документ в <?php ?>
больше не придумал.
....
И получилось, что heredoc, намного лучше, сейчас экспериментирую с ним.

p/s Вопрос по теме. ВО многих CMS шаблоны отдельными файлами, блоки PHP "вставляются" в шаблоны на местах "{blog}", это общая методика, или создана для отдельно взятого проекта.
Пример из PhpBB
Код

 
 
<table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
    <tr>
        <td class="nav" align="left"><a class="nav" href="{U_INDEX}">{L_INDEX}</a></td>
    </tr>
</table>

<table class="forumline" width="100%" cellspacing="1" cellpadding="3" border="0">
    <tr>
        <th class="thHead" height="25" valign="middle">{MESSAGE_TITLE}</th>
    </tr>
    <tr>
        <td class="row1" align="center"><form action="{S_CONFIRM_ACTION}" method="post">
<span class="gen"><br />{MESSAGE_TEXT}<br /><br />{S_HIDDEN_FIELDS}
<input type="submit" name="confirm" value="{L_YES}" class="mainoption" />
&nbsp;&nbsp;<input type="submit" name="cancel" value="{L_NO}" class="liteoption" /></span></form></td>
    </tr>
</table>

<br clear="all" />



Это сообщение отредактировал(а) Alix36 - 24.6.2008, 22:47


--------------------
Наши лица как дым, И никто не узнает как мы победим. (С)Пикник.
PM MAIL   Вверх
Feldmarschall
Дата 24.6.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Чтобы не путаться коде в первом варианте, этого кода должно быть как можно меньше. 

Основных типов шаблонов существует три.
1. Псевдошаблоны с блоками и выводом переменных.
Код

<!-- BEGIN: news -->
 <tr>
  <td>{TIILE}</td>
  <td>{TEXT}</td>
 </tr>
<!-- END: news -->

2. XSLT
Код

<xsl:for-each select="news">
 <tr>
  <td><xsl:value-of select="title"/></td>
  <td><xsl:value-of select="text"/></td>
 </tr>
</xsl:for-each>

3. PHP
Код

<? foreach ($news as $row): ?>
 <tr>
  <td><?=$row['title']?></td>
  <td><?=$row['text']?></td>
 </tr>
<?endforeach?>


Как видно, разница между ними небольшая. Вероятность запутаться в коде - одинаковая. То есть, проблема не в способе шаблонизации, а в грамотности построения шаблона.

Хередок в качестве шаблонизатора не используется практически нигде, поскольку в нем отсутствует даже примитивная логика, а только тупая вставка переменных.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0926 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.