| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > html в РНР или РНР - в HTML? |
| Автор: GAM 18.6.2008, 19:42 | ||||
Возник такой вот вопрос - в чём различие использования вставки через
И
В чем разница между <?php echo $url; ?> и . $url . ? |
| Автор: Feldmarschall 18.6.2008, 19:57 |
| в оформлении |
| Автор: Mal Hack 18.6.2008, 23:54 |
| Оформление тут не при чем. Тут есть завязки и на использование буфера вывода и скорость работы скрипта в целом... В принципе, оба варианта уступаю конструкции heredoc, хотя, конечно, все это индивидуально, но в 98% случаев heredoc наиболее оптимален. |
| Автор: Fortop 19.6.2008, 00:19 | ||
| Mal Hack, Да ну?
Добавлено через 4 минуты и 19 секунд пример с ошибкой |
| Автор: Feldmarschall 19.6.2008, 00:52 |
| хехе. очередное авторитетное замечание про скорость работы скриптов |
| Автор: GAM 19.6.2008, 00:59 |
| А то как хавает интерпритатор языка такие связки никаких нареканий нет по скорости или ещё каким тестам? Или это что-то из разряда «как удобней» и не стоит обращать внимания? |
| Автор: Feldmarschall 19.6.2008, 01:10 |
| Это что-то из разряда «как удобней» и не стоит обращать внимания. Другое дело, что в скриптах вообще, по идее, не должно быть ни html, ни даже текста. А в таком случае вопрос отпадает целиком. И единственный формат, который остается, это номер один, в, собственно, шаблонах. |
| Автор: GAM 19.6.2008, 01:13 |
| Не получится ли это что-то, на вроде SSI на PHP? |
| Автор: Feldmarschall 19.6.2008, 01:20 |
| Нет, даже близко не получится. SSI не язык, в отличие от. Впрочем, никто не заставляет использовать шаблоны именно на РНР - есть море других вариантов. Я говорю не о том, что надо использовать, а о том, что изо всех перечисленных вариантов реально используется только один - первый. В случае применения в шаблонах. Если же используется другой шаблонизатор, то тогда вопрос html в php и вовсе не поднимается. Хотя нет. еще есть компиляция. когда скрипты пишет не человек, а шаблонизатор. |
| Автор: Feldmarschall 19.6.2008, 10:49 | ||||
а тест был, разумеется, вида "мильён итераций бессмысленных операций", а не ab -n 100 -c 2 на реальный урл.
ну вот мы и переходим в область условностей. если не можем возразить по теме - изменим контекст =) да ещё и так категорично, "отсутствует полностью". хехе. оставим это на совести автора впрочем, можно поиграть и на его поле - нам не жалко. судя по всему, в этих гостевых проблема производительности стоит очень, очень остро
объясняю в третий раз. Допустим, у нас непростая гостевая книга, и шаблоны мы используем. В этом случае у нас два варианта 1. Используется шаблонизатор с псевдоязыком. В этом случае никаких хтмл тегов у нас в скрипте не пишется. То есть, проблемы их вывести не существует вовсе. Ни в первом варианте, ни во втором, ни в третьем. 2. В качестве шаблонизатора используется пхп. В этом случае применяется вариант номер один. В силу того, что единица больше нуля, мы делаем вывод, что при мало-мальски профессиональной разработке вариант один используется чаще других. |
| Автор: Mal Hack 19.6.2008, 11:07 | ||||||||
Естественно. В данном случае тест был бы полностью испорчен. Нам нужна скорость вывода, а не скорость межсетевой передачи. Поэтому это излишне.
Это не условность, а реальный пример, чтобы не быть голословным, и от темы я не отхожу, т.к. привел конкретный пример, объяснив его.
Категорично, т.е. задача должна быть решена оптимально, рационально и т.п. Технологию никто не отменял. Реализовать-то можно, с точки зрения практики, но вот смысл добираться до зуба через анальное отверстие - никакого.ь Еще как пример абстракции, зачем готовить 100 котлет, если будет всего 2-3 гостя??... Неправильно. Шаблонами все равно будет управлять PHP. И роль играют другие варианты. 1. - как вы показали - вывод через <?php .. . ?> Динамичность очень тяжело получить. Шаблоны перекрещиваются с PHP. 2. echo и print множество число раз, шаблонов в принуипе нет. 3. Шаблоны лежат в отдельном файле аля .tpl и парсятся встроенным спецшаблонизатором. Аля смарти. Тяжеловесен этот вариант, это его основной недостаток. 4. Используем шаблоны как на этом форуме, т.к. куски кода загоняются в пхп функции через heredoc и в нужном месте вызывается нужная функция (вот я говорю о оптимальности этого варианта). Отличие 3 от 4, в том, что в 3 варианте вся пляска идет от шаблона, структуры шаблона, переменных, макродиректив, а в 4 варианте пляска идет от скрипта, что лучше, т.к. если вам надо малость поменять технологическую структуру шаблона вам придется и код апгрейдить существенным образом. Проверено. И так писали и эдок....
Вот у нас в универе, так сказать, принято, что любое инженерное предположение должно быть обосновано, причем интуиция и прочие фишки - отменяются. "что единица больше нуля," это не техническое обоснование ;) |
| Автор: gta4kv 19.6.2008, 11:20 | ||
ipb 1.3 это вообще не самый лучший пример В 2.3(можетраньшехз) убрал из кода все heredoc'и, и вообще текст. и по-моему они сделали это не просто так ;) |
| Автор: Feldmarschall 19.6.2008, 11:35 | ||
| Мне это уже начинает надоедать. Убеждать человека, который года четыре назад был крупным специалистом, в его собственной неправоте - неблагодарная задача. Он давно привык, что всегда прав. Особенно когда он не замечает, что даже сам себе противоречит. Я попробую ещё раз. Последний. Речь не о межсетевой передаче. аб прекрасно можно использовать локально. Речь о том, что эта мифическая скорость вывода не имеет никакого реального значения. Пять копеек на 500% больше, чем одна копейка. Это подтвердят любые тесты. Но выбирая между двумя батонами хлеба, один из которых стоит 9-91, а другой - 9-95, на эту разницу никто не будет обращать внимания. Потому что во всей этой мышиной возне с оптимизацией одинарных кавычек важны не абсолютные цифры, а относительные Но при этом нас до ужаса волнует скорость приготовления этих котлет. Будем всем доказывать превосходство одного способа над другими. "Иван Соломонович, вы или крестик снимите, или трусики наденьте". Или у нас что-то серьёзное, где мы секунды считаем, или та самая гостевая на 2-3 посетителя. Во втором случае при чем здесь вообще все эти рассуждения о производительности?
Теперь ясно. Какие-то маргиналы используют метод, о котором я впервые слышу. Смарти - знаю. blitz - видел. ZF - пробовал. XTemplate - использовал. А тут такой революционный подход - хередок в функциях. Это у них называется шаблонизацией. Ну что ж мне придется взять свои слова обратно. Окей, хередок - это тоже метод "шаблонизации". |
| Автор: lukas 19.6.2008, 19:35 | ||||
| вообще первый метод намного удобнее... для дальнейшего разбора... практически всегда использую первый способ... а особенно что то вроде этого...
это намного удобнее чем писать
да и код HTML более красивый получается... при первом случае... |
| Автор: Nikitozz 19.6.2008, 21:08 |
| с помощью этих вставок (первый вариант) действительно сложнее создать по настоящему динамическую страницу... |
| Автор: lukas 19.6.2008, 21:37 | ||||||||
| Nikitozz, это происходит как раз тогда когда логика плохо отделена от верстки... в итоге на практике в начале мне тоже так казалось... но потом понимаешь все... и делаешь первым вариантом... вот наглядный маленький пример...
а используем так:
или так...
Конешно и то и другое практически одно и тоже.. но в первом варианте мы можем получить текст... а во втором только напечатать... |
| Автор: Sannis 19.6.2008, 22:46 | ||
Хм, в последних постах, которые про шаблонизаторы, немного скос не в нужную строну пошёл. Если говорить об удобстве вёрстки шаблонов, для верстальшика, а не программиста этой системы, то естесственно его нельзя застравлять писать шаблон с использованием echo, if(){} и т.д. Даже обсуждать нечего, просто спросите у них
Но это всё оффтоп, который даже косвенно не относится к теме P.S. А уход от heredoc в IPB, как мне видится, был связан не со скоростью, а с тем, что в шаблонах стало можно использовать логические выражения, вроде написанного мной выше. Что, кстати говоря, позволило из пункта 4 сделать пункт 3. Хотя не за горами IPB 3.x, в котором как раз реализован вариант 3. |
| Автор: Feldmarschall 20.6.2008, 08:46 | ||
Sannis, скос пошел только по одной причине - в любом мало-мальски серьёзном приложении ни о каком прямом выводе хтмл из скриптов речь не идет. То есть, первоначальный вопрос имеет весьма ограниченную область применения.
об этом и речь. никто про скорость не говорит. |
| Автор: Sannis 20.6.2008, 21:29 |
| Да вроде Mal Hack говорил про скорость на первой странице |
| Автор: lukas 21.6.2008, 17:47 |
| Sannis, хм... сейчас редко встретишь человека который только верстает... помоему хоть что-то из программирования верстальщик должен знать... |
| Автор: nerezus 21.6.2008, 18:07 |
| Может хватит обсуждать абстрактные примеры? )) Почему бы просто не писать нормально и использовать шаблонизатор(да или пхп в роли оного)? ) |
| Автор: IZ@TOP 21.6.2008, 18:18 | ||
PHP - по сути, и есть шаблонизатор Я советую PHP in HTML. |
| Автор: Sannis 21.6.2008, 18:20 |
| Одно дело "знает", другое дело удобство, скорость и стоимость разработки |
| Автор: lukas 21.6.2008, 20:11 |
| ну например в Битриксе очень удобно сделали разделение логики и верстки..., и никакие шаблонизаторы не нужны, как сказал IZ@TOP, шаблонизатором служит сам PHP... Технология приблизительно такая... Есть компоненты... у компонентов есть шаблоны... у одного компонента может быть сколько угодно шаблонов... вся функциональная часть реализована в тексте component.php, который подключается в каждый шаблон и создает различные массивы, которые и используются для построения шаблона... в итоге ты имеешь всю информацию что тебе нужна и делаешь с ней все что хочешь, при этом не видишь внутренний реализации... все шаблоны реализованы с помощью PHP in HTML, т.к. HTML in PHP при такой системе моразм... |
| Автор: Elfet 21.6.2008, 21:08 |
| Так и не понял в - чём различие? Мне всегда трудо отделить html от php. Я всегда делаю один класс с общими элементами. Пользуюсь <?=$ ?> и всё собираю в буфер. Получается довольно удобно. Добавлено через 3 минуты Ах да! Самое главное-то забыл! Если использовать <?=$ ?> то можно полноценно пользоваться Zend-ом для вставки тегов и их свойств |
| Автор: nerezus 22.6.2008, 12:55 | ||||
Но все же логику и представление как минимум обязательно разделить. Теперь юзаю смарти: верстальшику он понятнее, сам шаблоны не делаю )
|
| Автор: Alix36 24.6.2008, 22:43 | ||||
| хм, раньше делал как в 1 варианте, потом стал путаться в коде.... 2 вариант-крайне не удобен как программисту так и верстальщику(про тех кто не знает что такое "echo" даже и думать не приходится =( ) 3 heredoc , мне не нравится при верстке, птому что я использую дримвьюер, а он такой("$b = <<<HDOC") конструкции не понимает... 4) Однажды сел и написал библиотеку функций html тегов и элементов
.... некоторое время с ней работал. Потом одним дождливым вечером взял листок бумаги и написал 2 колонки. Минусы: 1)Верстальщик, не знающий что делает функция, не сможет что-либо править. 2)Нет увереснности что PHP есть разница моего варианта и второго варианта( echo '<form action="' . $url . '" method="get">';)А то и мое хуже, еще + лишний вызов функции... 3)Дримвьюер опять ничего не может. 4)Крайне ограниченный HTML, ибо не все параметры Тэгов входят в функциональность функции. Плюсы 1)Мне все понятно(Жалко что только мне....) 2)Весь документ в <?php ?> больше не придумал. .... И получилось, что heredoc, намного лучше, сейчас экспериментирую с ним. p/s Вопрос по теме. ВО многих CMS шаблоны отдельными файлами, блоки PHP "вставляются" в шаблоны на местах "{blog}", это общая методика, или создана для отдельно взятого проекта. Пример из PhpBB
|
| Автор: Feldmarschall 24.6.2008, 23:00 | ||||||
| Чтобы не путаться коде в первом варианте, этого кода должно быть как можно меньше. Основных типов шаблонов существует три. 1. Псевдошаблоны с блоками и выводом переменных.
2. XSLT
3. PHP
Как видно, разница между ними небольшая. Вероятность запутаться в коде - одинаковая. То есть, проблема не в способе шаблонизации, а в грамотности построения шаблона. Хередок в качестве шаблонизатора не используется практически нигде, поскольку в нем отсутствует даже примитивная логика, а только тупая вставка переменных. |