[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Методы шаблонизации
Quieteroks
Здравствуйте.
Не люблю я использовать написанные кем то шаблонизаторы. Дольше изучать их, чем самому написать... smile.gif Поэтому интересно, как можно изобрести велосипед... Или какими методами пользуются те же шаблонизаторы. Или лично Вы возможно.

В частности интересуют, какие есть методы шаблонизации в php, кроме регулярный выражений и таких функций как str_replace. Без них наверно никуда не пойти в этом деле...

Но все же, к примеру тот же DOMDocument... Но мне кажется он местами будет работать дольше чем регулярное выражение. Или получить содержимое файла и анализировать построчно... Но тут логика весьма усложняется. И больше мороки, чем использовать DOM или регулярку.



Спустя 12 минут, 17 секунд (14.08.2012 - 16:32) dron4ik написал(а):
Не люблю шаблонизаторы... по нужде юзаю смарти... там то и изучать (как оказалось) нечего)

Спустя 2 минуты, 29 секунд (14.08.2012 - 16:34) Quieteroks написал(а):
dron4ik
Не спорю. Изучать нечего.
Но как и любой фреймворк, пытающийся сделать все и сразу, перегружен.
Читал что Twig работает в 10 раз (примерно) быстрее Smarty. Но чет я в нем копаюсь и не понимаю к чему столько методов и классов... И где вообще парсинг файла то происходит.

Спустя 2 минуты, 58 секунд (14.08.2012 - 16:37) kamanch написал(а):
Встречаются 2 еврея.
1: Слушал недавно Битлз. Не знаю, что его так все хвалят. Ни слуха, ни голоса...
2: А где ты их слушал?
1: Да Мойша вчера напел.

От так и у вас
Цитата
Не люблю я использовать написанные кем то шаблонизаторы. Дольше изучать их, чем самому написать...

Цитата
Не люблю шаблонизаторы...


Не люблю заменить на "не умею пользоваться" или "не имею о них понятия" вот тогда будет правда.
Шаблонизаторы - это мощный инструмет, который придает коду структуризацию и реализует принцип разделения логики сайта от вывода.

Спустя 9 минут, 4 секунды (14.08.2012 - 16:46) Quieteroks написал(а):
kamanch
Хм. Свой шаблонизатор из трех функций я очень люблю...
Я не хочу использовать этот самый мощный инструмент, если я не нуждаюсь в нем.
Мне нужно то получить шаблонный файл, и заменить в нем данные.
Но время уже переходить на классы и вообще оптимизировать свой код.

Поэтому есть вполне конкретный вопрос, как мне мои три функции улучшить и возможно загнать в класс, дабы получать данные для шаблона не через global... В общем оптимизирую свои наработки.

Спустя 32 секунды (14.08.2012 - 16:47) dron4ik написал(а):
Цитата (Quieteroks @ 14.08.2012 - 14:19)
В частности интересуют, какие есть методы шаблонизации в php, кроме регулярный выражений и таких функций как str_replace. Без них наверно никуда не пойти в этом деле...


str_replace - даже не могу сообразить как без него))) та мне и не нужно)

Спустя 35 минут, 30 секунд (14.08.2012 - 17:22) bodja написал(а):
Quieteroks
Ну есть только один способ улучшить свой шаблонизатор ,не пользоватся шаблонизатором в частности и в ПХП шаблоном вообще biggrin.gif
Вот и будет вам идеальное разделение.

Спустя 2 часа, 3 минуты, 44 секунды (14.08.2012 - 19:26) sergeiss написал(а):
Цитата (Quieteroks @ 14.08.2012 - 18:19)
В частности интересуют, какие есть методы шаблонизации в php, кроме регулярный выражений и таких функций как str_replace.

Ну, например... Вот так.

1. Делаем файл, содержащий простой шаблон. Никаких условий нет, только данные. Допустим, у нас тут форма сидит.

<form method="post" name="$form_name">
<label>
$first_label</label>
<input
type="text" name="first_name" value="$first_name" />
<input
type="text" name="family_name" value="$family_name" />
</form>


Сохраняем это в файл с именем, например, form1.tpl. Существенно!!! - никаких тэгов ПХП тут нету!

2. В основном (допустим, это index.php) делаем настройки переменных. Можно считать их из БД или получить каким-то другим образом.
$form_name='form_001';
$first_name='Введите имя';
$family_name='Введите фамилию';
...

// в этом же скрипте далее загружаем шаблон
$template=file_get_contects( 'form1.tpl' );
// и выводим его, предварительно сделав подстановку всех переменных
eval( '$info="'. addslashes($template).'"; ');

echo $info;


Возможно, не самый лучший способ... Но вопрос был "какие есть (другие) методы шаблонизации" :) Тут никаких регулярок, никаких функций замены текста. Всё просто и прозрачно.
Нужные замены все выполняются при выполнении eval().

Спустя 1 день, 12 часов, 28 минут, 25 секунд (16.08.2012 - 07:54) kamanch написал(а):
dron4ik
НЕуважаемый, а не много ли это будет 2 минуса за один пост? Завтра будет третий???

Спустя 42 минуты, 13 секунд (16.08.2012 - 08:37) Игорь_Vasinsky написал(а):
да лан) ща компенсируем)

Спустя 58 минут, 2 секунды (16.08.2012 - 09:35) Quieteroks написал(а):
sergeiss
Это самый медленный вариант, если я не ошибаюсь. Тем более eval не самая безопасная функция в php... И уж тем более в ней нельзя никак уберечь скрипт от ошибки при отсутствии переменной.

В общем будет продолжать ковырять шаблонизаторы или останусь на регулярке. smile.gif

Спустя 2 часа, 37 секунд (16.08.2012 - 11:35) dron4ik написал(а):
Цитата (kamanch @ 16.08.2012 - 05:54)
dron4ik
НЕуважаемый, а не много ли это будет 2 минуса за один пост? Завтра будет третий???

Далеко НЕуважаемый kamanch, Вы хотели разъяснений, я вам их предоставил, "за гаражами" это бы наверное не получилось!

Спустя 13 минут, 55 секунд (16.08.2012 - 11:49) kamanch написал(а):
Цитата
dron4ik: Потому что - Оскарбил!

kamanch, 16.08.2012 - 06:17: оскОрбил - это, когда тебя назвали оскорбительным словом.
А там ты просто обиделся, как 3х летняя девочка.
Учим русский язык. Как граматику, так и морфологию


Детский сад, ей богу smile.gif
Самоутверждаться другими методами нужно.
Знаниями, положением в обществе, уважением коллег и близких, достигнутыми целями.
А ты все, чего достиг, так это 4 минуса за 7 месяцев на форуме.
Это значит, что за всё это время ни один человек не захотел сказать тебе "спасибо".

Спустя 15 минут, 7 секунд (16.08.2012 - 12:04) dron4ik написал(а):
Цитата (kamanch @ 16.08.2012 - 09:49)
Цитата
dron4ik: Потому что - Оскарбил!

kamanch, 16.08.2012 - 06:17: оскОрбил - это, когда тебя назвали оскорбительным словом.
А там ты просто обиделся, как 3х летняя девочка.
Учим русский язык. Как граматику, так и морфологию


Детский сад, ей богу smile.gif
Самоутверждаться другими методами нужно.
Знаниями, положением в обществе, уважением коллег и близких, достигнутыми целями.
А ты все, чего достиг, так это 4 минуса за 7 месяцев на форуме.
Это значит, что за всё это время ни один человек не захотел сказать тебе "спасибо".

Знаешь, а ведь это не то место где бы я хотел слышать спасибо, или не хотел, в зависимости от твоих религиозных взглядов!

Спустя 3 часа, 19 секунд (16.08.2012 - 15:05) twin написал(а):
Цитата (kamanch @ 14.08.2012 - 14:37)
Не люблю заменить на "не умею пользоваться" или "не имею о них понятия" вот тогда будет правда.
Шаблонизаторы - это мощный инструмет, который придает коду структуризацию и реализует принцип разделения логики сайта от вывода.

Меня всегда мучает вопрос, почему никому не приходит в голову гениальная идея: по утрам сшивать рубашку, а по вечерам распарывать... Ведь это поможет структурировать одежду и разделить пуговицы и нитки. А швейная машинка - мощнейший инструмент, позволяющий это делать.

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

Спустя 41 минута, 9 секунд (16.08.2012 - 15:46) T1grOK написал(а):
Цитата (twin @ 16.08.2012 - 13:05)
PHP это по сути и есть шаблонизатор, и заменять нативный синтаксис на суррогатный синтаксис шаблонизатора та же дурь, что и пример с рубашками.

Может их пугают(что то типо клаустрофобия и т.д.) пхп знаки <? ?> и куча переменных с долларами вначале $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ biggrin.gif

Спустя 15 минут, 51 секунда (16.08.2012 - 16:02) SlavaFr написал(а):
Цитата (kamanch @ 14.08.2012 - 14:37)
Шаблонизаторы - это мощный инструмет, который придает коду структуризацию и реализует принцип разделения логики сайта от вывода.

разделение логики от вывода проиходит не в шаблонизаторе а в идее с именем View. Шаблонизатор конечно тоже View, но использует как правило обасалютно неоправданую методику применения. Все известные мне (я их к счастью не много знаю) шаблонизаторы пытаютсй на интерпретированном языке PHP создать новый интерпретированный язык.

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


Спустя 15 минут, 42 секунды (16.08.2012 - 16:17) killer8080 написал(а):
Цитата (Quieteroks @ 14.08.2012 - 17:19)
В частности интересуют, какие есть методы шаблонизации в php, кроме регулярный выражений и таких функций как str_replace. Без них наверно никуда не пойти в этом деле...


Функция str_replace для этих целей не подходит в принципе.
Я то же противник шаблонизаторов. PHP и есть шаблонизатор, и все эти суррогатные псевдо-синтаксисы никакой пользы не несут, от них один вред.

Спустя 8 часов, 3 минуты, 16 секунд (17.08.2012 - 00:21) sergeiss написал(а):
Цитата (Quieteroks @ 16.08.2012 - 11:35)
sergeiss
Это самый медленный вариант, если я не ошибаюсь. Тем более eval не самая безопасная..........

Так вопрос был какой? "какие есть методы шаблонизации в php, кроме регулярный выражений и таких функций как str_replace" - мой ответ как раз дает ответ на этот вопрос smile.gif То есть, ТС хотел узнать, как можно сделать шаблонизацию. А уж скорость... ХЗ, не задумывался. Я вообще такими хреновинами не пользуюсь, как шаблоны. По крайней мере в том виде, как их обычно представляют.

Спустя 24 минуты, 54 секунды (17.08.2012 - 00:46) killer8080 написал(а):
Цитата (sergeiss @ 17.08.2012 - 01:21)
str_replace

str_replace нельзя, можно замену делать через strtr.

Спустя 9 дней, 12 часов, 25 минут, 6 секунд (26.08.2012 - 13:11) Quieteroks написал(а):
Эх граждане. Спрашивал одно, ответили на другое...

Я не пользуюсь сторонними шаблонизаторами в силу их загруженности и как раз той самой попытки внутри создать второй интерпритатор внутри интерпритатора. Я же столкнулся в процессе изучения с проблемой, которую решить смог только самописным шаблонизатором. Я просто заменил тот самый способ <?=$val?> на более привлекательный {val} Как мне кажется. В добавок в связке с тем что я использую один большой массив с данными для вставки в шаблон, мне облегчается структура программы, я просто вывожу массив данных, а он уже за меня их подставит куда нужно. В добавок нет различных ветвлений и прочих условных интерпритаций, которые отлично делает сам пхп, я просто в массив задам те данные, которые нужны, чем в самом шаблоне их анализировать.

Но вот есть такие вещи, как cheked, selected и прочая ерунда, которую к сожалению приходится генерить так же в переменную. Думал может DOMDocument взять для этих целей (еще не влез в справку про него)... Тогда можно прям теги анализировать и нужные значения подставлять в тег не создавая дополнительных переменных в массиве. А для вставки допустим модулей использовать <modul set="news" /> допустим.

В общем да, раньше пхп был шаблонизатором, сейчас же уже грубо его так называть...
Хабрахабр: Шаблонизатор

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

Спустя 1 месяц, 2 дня, 4 часа, 42 минуты, 20 секунд (28.09.2012 - 17:53) dron4ik написал(а):
Цитата (Quieteroks @ 26.08.2012 - 10:11)
Вот мне и интересно, как можно шаблонизировать странички, если не использовать регулярки или стандартные замены внутри строк на другие строки...

JS наверное...

Ну апростейший вареант меняем { на <?php echo $
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.