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

Поиск:

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


Новичок



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

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



Возник такой вот вопрос - в чём различие использования вставки через 
Код
 <?php ... ?><form action="<?php echo $url; ?>" method="get"><?php ... ?>

И 
Код

echo '<form action="' . $url . '" method="get">';


В чем разница между <?php echo $url; ?> и . $url . ?
PM MAIL   Вверх
Feldmarschall
Дата 18.6.2008, 19:57 (ссылка) |   (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



в оформлении
PM   Вверх
Mal Hack
Дата 18.6.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Оформление тут не при чем.
Тут есть завязки и на использование буфера вывода и скорость работы скрипта в целом...
В принципе, оба варианта уступаю конструкции heredoc, хотя, конечно, все это индивидуально, но в 98% случаев heredoc наиболее оптимален. 
PM ICQ   Вверх
Fortop
Дата 19.6.2008, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

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



Mal Hack, 
Цитата(Mal Hack @  18.6.2008,  23:54 Найти цитируемый пост)
heredoc наиболее оптимален.  

Да ну?

Код

$b = <<<HDOC
<?xml ?>
<root>
    <node>caption</node>
</root>
<<<HDOC;

var_dump($b);


Добавлено через 4 минуты и 19 секунд
пример с ошибкой smile ну да бог с ним smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Feldmarschall
Дата 19.6.2008, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



хехе. очередное авторитетное замечание про скорость работы скриптов


Это сообщение отредактировал(а) Feldmarschall - 19.6.2008, 01:13
PM   Вверх
GAM
Дата 19.6.2008, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А то как хавает интерпритатор языка такие связки никаких нареканий нет по скорости или ещё каким тестам?
Или это что-то из разряда «как удобней» и не стоит обращать внимания?
PM MAIL   Вверх
Feldmarschall
Дата 19.6.2008, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Это что-то из разряда «как удобней» и не стоит обращать внимания.

Другое дело, что в скриптах вообще, по идее, не должно быть ни html, ни даже текста.
А в таком случае вопрос отпадает целиком. И единственный формат, который остается, это номер один, в, собственно, шаблонах.


PM   Вверх
GAM
Дата 19.6.2008, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не получится ли это что-то, на вроде SSI на PHP?
PM MAIL   Вверх
Feldmarschall
Дата 19.6.2008, 01:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Нет, даже близко не получится. SSI не язык, в отличие от.
Впрочем, никто не заставляет использовать шаблоны именно на РНР - есть море других вариантов. 
Я говорю не о том, что надо использовать, а о том, что изо всех перечисленных вариантов реально используется только один - первый. В случае применения в шаблонах. Если же используется другой шаблонизатор, то тогда вопрос html в php и вовсе не поднимается.
Хотя нет. еще есть компиляция. когда скрипты пишет не человек, а шаблонизатор. 
PM   Вверх
Mal Hack
Дата 19.6.2008, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Fortop, и что, так сказать вы показали своим примером?
Цитата(Feldmarschall @  19.6.2008,  00:52 Найти цитируемый пост)
хехе. очередное авторитетное замечание про скорость работы скриптов

А я в чем-то не прав? Я сказал явную глупость? Вы слишком голословны. Сказать "это [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме]" можно совершенно спокойно, а обосновать могут лишь профессионалы....

Цитата(GAM @  19.6.2008,  00:59 Найти цитируемый пост)
А то как хавает интерпритатор языка такие связки никаких нареканий нет по скорости или ещё каким тестам?
Или это что-то из разряда «как удобней» и не стоит обращать внимания? 

Я бы на вашем месте определенных бы товарищей слушал бы поменьше. Пару лет назад мы тут делали тесты на производительность скриптов при выводе. Тест, правда, был с echo и print и обособлением переменых, т.е. heredoc не использовался. Но, могу сказать по своему опыту, качественный тест я в свое время делал. Пусть и не совсем оптимально для теста, но, heredoc, его вывод, выполняется скриптом быстрее, ввиду того что внутренний парсинг проходит быстрее, ввиду более статичной структору шаблонной вставки.

Цитата(Feldmarschall @  19.6.2008,  01:10 Найти цитируемый пост)
Другое дело, что в скриптах вообще, по идее, не должно быть ни html, ни даже текста.
А в таком случае вопрос отпадает целиком. И единственный формат, который остается, это номер один, в, собственно, шаблонах.

Шаблоны не панацея. Для простой гостевой смылс вставлять шаблонный движок отсутствует полностью.
Это в качестве примера.

Цитата(GAM @  19.6.2008,  01:13 Найти цитируемый пост)
Не получится ли это что-то, на вроде SSI на PHP? 

SSI в ПХП, это redfile, если не изсенили того, что сразу в STDOUT идет отправление данных..

Цитата(Feldmarschall @  19.6.2008,  01:20 Найти цитируемый пост)
 что изо всех перечисленных вариантов реально используется только один - первый.

Вы ооочень сильно ошибаетесь. Первый вариант (множество <?php ... ?>) как раз-таки используется меньше всего, т.к. работает дольше всего, т.к. есть возможность несанкциониованной вставки. Главный принцип PHP программиста, один из, конечно, весь вывод должен быть только ОДИН раз (или минимальное кол-во), соответсвенно реализовывается это не первой конструкцией ;)
PM ICQ   Вверх
Feldmarschall
Дата 19.6.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Цитата(Mal Hack @  19.6.2008,  10:31 Найти цитируемый пост)
качественный тест я в свое время делал.

а тест был, разумеется, вида "мильён  итераций бессмысленных операций", а не ab -n 100 -c 2 на реальный урл.

Цитата(Mal Hack @  19.6.2008,  10:31 Найти цитируемый пост)
Для простой гостевой смысл вставлять шаблонный движок отсутствует полностью.

ну вот мы и переходим в область условностей. если не можем возразить по теме - изменим контекст =)
да ещё и так категорично, "отсутствует полностью". хехе. оставим это на совести автора
впрочем, можно поиграть и на его поле - нам не жалко. судя по всему, в этих гостевых проблема производительности стоит очень, очень остро   smile 

Цитата(Mal Hack @  19.6.2008,  10:31 Найти цитируемый пост)
Первый вариант (множество <?php ... ?>) как раз-таки используется меньше всего,

объясняю в третий раз. 
Допустим, у нас непростая гостевая книга, и шаблоны мы используем. 
В этом случае у нас два варианта
1. Используется шаблонизатор с псевдоязыком. В этом случае никаких хтмл тегов у нас в скрипте не пишется. То есть, проблемы их вывести не существует вовсе. Ни в первом варианте, ни во втором, ни в третьем.
2. В качестве шаблонизатора используется пхп. В этом случае применяется вариант номер один. 
В силу того, что единица больше нуля, мы делаем вывод, что при мало-мальски профессиональной разработке вариант один используется чаще других.

Это сообщение отредактировал(а) Feldmarschall - 19.6.2008, 11:05
PM   Вверх
Mal Hack
Дата 19.6.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(Feldmarschall @  19.6.2008,  10:49 Найти цитируемый пост)
а тест был, разумеется, вида "мильён  итераций бессмысленных операций", а не ab -n 100 -c 2 на реальный урл.

Естественно. В данном случае тест был бы полностью испорчен. Нам нужна скорость вывода, а не скорость межсетевой передачи. Поэтому это излишне.

Цитата(Feldmarschall @  19.6.2008,  10:49 Найти цитируемый пост)
ну вот мы и переходим в область условностей. если не можем возразить по теме - изменим контекст =)

Это не условность, а реальный пример, чтобы не быть голословным, и от темы я не отхожу, т.к. привел конкретный пример, объяснив его.

Цитата(Feldmarschall @  19.6.2008,  10:49 Найти цитируемый пост)
да ещё и так категорично, "отсутствует полностью". хехе. оставим это на совести автора

Категорично, т.е. задача должна быть решена оптимально, рационально и т.п. Технологию никто не отменял.
Реализовать-то можно, с точки зрения практики, но вот смысл добираться до зуба через анальное отверстие - никакого.ь Еще как пример абстракции, зачем готовить 100 котлет, если будет всего 2-3 гостя??...

Цитата(Feldmarschall @  19.6.2008,  10:49 Найти цитируемый пост)
В этом случае у нас два варианта

Неправильно.
Шаблонами все равно будет управлять PHP.
И роль играют другие варианты.
1. - как вы показали - вывод через  <?php .. . ?> Динамичность очень тяжело получить. Шаблоны перекрещиваются с PHP.
2. echo и print множество число раз, шаблонов в принуипе нет.
3. Шаблоны лежат в отдельном файле аля .tpl и парсятся встроенным спецшаблонизатором. Аля смарти.  Тяжеловесен этот вариант, это его основной недостаток.
4. Используем шаблоны как на этом форуме, т.к. куски кода загоняются в пхп функции через heredoc и в нужном месте вызывается нужная функция (вот я говорю о оптимальности этого варианта).

Отличие 3 от 4, в том, что в 3 варианте вся пляска идет от шаблона, структуры шаблона, переменных, макродиректив, а в 4 варианте пляска идет от скрипта, что лучше, т.к. если вам надо малость поменять технологическую структуру шаблона вам придется и код апгрейдить существенным образом. Проверено. И так писали и эдок....

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

Вот у нас в универе, так сказать, принято, что любое инженерное предположение должно быть обосновано, причем интуиция и прочие фишки - отменяются. "что единица больше нуля," это не техническое обоснование ;)
PM ICQ   Вверх
gta4kv
Дата 19.6.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

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



Цитата(Mal Hack @ 19.6.2008,  11:07)
4. Используем шаблоны как на этом форуме, т.к. куски кода загоняются в пхп функции через heredoc и в нужном месте вызывается нужная функция (вот я говорю о оптимальности этого варианта).

ipb 1.3 это вообще не самый лучший пример smile
В 2.3(можетраньшехз) убрал из кода все heredoc'и, и вообще текст. и по-моему они сделали это не просто так ;)
PM MAIL   Вверх
Feldmarschall
Дата 19.6.2008, 11:35 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Мне это уже начинает надоедать.
Убеждать человека, который года четыре назад был крупным специалистом, в его собственной неправоте - неблагодарная задача. Он давно привык, что всегда прав. Особенно когда он не замечает, что даже сам себе противоречит.
Я попробую ещё раз. Последний.

Цитата(Mal Hack @  19.6.2008,  11:07 Найти цитируемый пост)
Нам нужна скорость вывода, а не скорость межсетевой передачи.

Речь не о межсетевой передаче. аб прекрасно можно использовать локально. 
Речь о том, что эта мифическая скорость вывода не имеет никакого реального значения. 
Пять копеек на 500% больше, чем одна копейка. Это подтвердят любые тесты. Но выбирая между двумя батонами хлеба, один из которых стоит 9-91, а другой - 9-95, на эту разницу никто не будет обращать внимания.
Потому что во всей этой мышиной возне с оптимизацией одинарных кавычек важны не абсолютные цифры, а относительные

Цитата(Mal Hack @  19.6.2008,  11:07 Найти цитируемый пост)
Зачем готовить 100 котлет, если будет всего 2-3 гостя??...

Но при этом нас до ужаса волнует скорость приготовления этих котлет. Будем всем доказывать превосходство одного способа над другими.
"Иван Соломонович, вы или крестик снимите, или трусики наденьте". 
Или у нас что-то серьёзное, где мы секунды считаем, или та самая гостевая на 2-3 посетителя. Во втором случае при чем здесь вообще все эти рассуждения о производительности?

Цитата(Mal Hack @  19.6.2008,  11:07 Найти цитируемый пост)
4. Используем шаблоны как на этом форуме, т.к. куски кода загоняются в пхп функции через heredoc и в нужном месте вызывается нужная функция (вот я говорю о оптимальности этого варианта).

Теперь ясно. Какие-то маргиналы используют метод, о котором я впервые слышу. Смарти - знаю. blitz - видел. ZF - пробовал. XTemplate - использовал. А тут такой революционный подход - хередок в функциях. Это у них называется шаблонизацией. 
Ну что ж мне придется взять свои слова обратно. Окей, хередок - это тоже метод "шаблонизации".
PM   Вверх
lukas
Дата 19.6.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вообще первый метод намного удобнее... для дальнейшего разбора... практически всегда использую первый способ...


а особенно что то вроде этого...

Код

<?if(true):?>
 <div>
   Тут текст
 </div>
<?endif?>


это намного удобнее чем писать

Код

if(true)
 {
  echo '<div>';
  echo 'Тут текст';
  echo '</div>';  
 }


да и код HTML более красивый получается... при первом случае...

Это сообщение отредактировал(а) lukas - 19.6.2008, 19:38


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
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   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

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

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


 




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


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

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