Помогите разобраться с циклом

[Удален]
#11

Ну да, нормальный вариант шаблонизации =) Если б еще шаблон в переменной стоял, ну чисто для удобочитаемости

З
На сайте с 24.04.2008
Offline
54
#12

В php можно делать вставки кода в разметку HTML:

<b>Жалобы при поступлении:</b><br><?=$myrow1['jaloba']?><br><b>VITE:</b><br><?=$myrow1['vite']?><br><b>MORBI:</b><br><?=$myrow1['morbi']?><br>

Чем это удобно - можно делать циклы:

<table>
<? while ($row = mysql_fetch_array($rows)): ?>
<tr><td><?=$row['key1']?></td><td><?=$row['key3']?></td><td><?=$row['key3']?></td></tr>
<? endwhile; ?>
</table>

Здыхлик добавил 14.01.2009 в 14:16

Т.е. все, что вне пределов собственно php-инструкций (<?php код ?> или <? код ?>) выводится в браузер. Так удобно html-тэги сразу выкидывать пользователю, иногда подставляя какие-то значения на ходу.

[Удален]
#13

Ничего личного, но так делают только мудаки =) Смешивать PHP и HTML код совершенно не приемлимо для более чем одноразового проекта. Если вам нужно какой то парсер один раз запустить - тут валяйте как хотите. Но в больших масштабах это моветон

З
На сайте с 24.04.2008
Offline
54
#14

Т.е. выводить HTML-шаблон через echo или print - это нормально? 0_o

Кстати, может быть подскажете, как вывести HTML совсем отдельно от php, не смешивая их?

Шаблонизаторы типа smarty можете не приводить, т.к. в них тоже присутствуют инородные элементы, просто это уже не php :)

[Удален]
#15

А через что еще его выводить, если других функций в пхп для вывода нет. Это уж точно лучше и приятней для парсера чем выводить его вне скобок <? ?>

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

З
На сайте с 24.04.2008
Offline
54
#16

А я разве говорил, что-то про объединение всего в один файл? :) Вроде нигде к базам не обращался, файлы не читал... Просто раскладывал готовые переменные в HTML-коде...

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

PS. Вру, в одном месте есть у меня mysql_fetch_array(), но это был пример навскидку :) Естественно, все это должно быть подготовлено в контроллере и передано шаблону в виде переменной. Соответственно там будет foreach($data as $row). Никто MVC не отменял вроде

Здыхлик добавил 14.01.2009 в 15:00

А по поводу "лучше и приятнее" - откуда Вам-то знать? php изначально создавался как язык для тесной интеграции с html, хорошо это или плохо. Вывод огромного блока разметки через echo/print ИМХО еще больший моветон... Особенно когда захотите верстку менять.

[Удален]
#17
Здыхлик:
А по поводу "лучше и приятнее" - откуда Вам-то знать? php изначально создавался как язык для тесной интеграции с html, хорошо это или плохо.

вот тут то вы и прокололись =) PHP это Hypertext Preprocessor по определению. Понимаете суть слова "ПРЕпроцессинг" ?

И подобный вариант его использования возможен стал только с появлением mod_php. Через CGI не получится разбавить HTML-страничку вставками до такой степени.

Менять верстку тем то и удобно когда весь шаблон в файлах лежит и нет ни тега внутри кода. Ну вы не спорьте, просто посмотрите на любую приличную CMS (битрикс я в этот список не включаю).

З
На сайте с 24.04.2008
Offline
54
#18

Мммм... Во-первых, как правило, шаблоны лежат в php-файлах :) По крайней мере в известных мне CMS.

Во-вторых, что значит "ни тэга внутри кода"? Как тогда php узнает, что куда впихнуть? :) Опять же, замену <?=$title?> на {TITLE} я избавлением от кода не считаю.

ЗЫ. Я не требую смешивать разметку и код, но как раз в шаблонах это и применимо.

[Удален]
#19

здравствуйте приехали

<?=$title?> - код, который должен исполниться интерпретатором.

{TITLE} - не код. Текст. Если угодно, часть HTML-кода. Он может и не замениться вовсе. И обрабатывается интерпретатором совсем иначе. Точнее, обрабатывается вашим собственным кодом, что куда оптимальней, при условии что код не корявый. В этом то и суть MVC. Нет, конечно если у вас в шаблонах стоят вставки <?=$title?> которые прямо в таком виде заменяются preg_replaceом или str_replaceом, то претензий нет, это не код =)

Ну а php файлы в шаблонах CMSок как правило внутри то все равно без php. Вот смарти в этом смысле мне противен, но он компилирующий шаблонизатор - ему можно.

З
На сайте с 24.04.2008
Offline
54
#20

{TITLE} - Это псевдокод, но мне лично это без разницы, смешивание верстки и кода присутствует (особенно когда Вы начнете применять циклы).

Не вижу абсолютно никакого смысла в том, чтобы писать дополнительный парсер для шаблонов, если имеется native-возможность вывода шаблона с подстановкой переменных. В общем-то это холивар и он на нас с Вами не закончится :) Вообще не понимаю, с чего такое неприятие вывода HTML интерпретатором вне самого скрипта? Чем оно обосновано? Чем include() шаблона хуже, чем file_get_contents()+echo()?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий