powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Зачем нужна шаблонизация?
25 сообщений из 120, страница 1 из 5
Зачем нужна шаблонизация?
    #38876313
Нестер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.
Подскажите начинающему программисту, а зачем нужна шаблонизация в виде smarty и ему подобные?
Ведь куча всякого кода, зачем...

Если можно в одной странице прописать
<?php

$a="Заголовок";
require "header.php";

в header.php файле принять переменную

<p> Здесь: <?php $a > </p>

Зачем городить огороды с шаблонизаторами?
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38876320
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нестер,

Чтобы разделить бизнес-логику и логику отображения.
К тому же PHP сам является шаблонизатором
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38876326
Нестер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZНестер,

Чтобы разделить бизнес-логику и логику отображения.
К тому же PHP сам является шаблонизатором


Ну так какая разница между вставками {$title} и <?php $title > ??
Что так есть лишние элементы, с точки зрения "логики отображения", что так )
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38876332
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нестер,

В большом проекте с большой кодовой базой будет легко запутаться будет в коде, который и обрабатывает данные от пользователя, делает кучу сложных действий и т. д.
А в случае подхода с шаблонизатором, логика отображения лежит полностью на контенте шаблонов, а основная бизнес-логика находится уже в скриптовых файлах. Такой подход не только удобен в плане организации кода (например, верстальщик не захочет идти в PHP-файл и смотреть где там вёрстка поехала, ему удобнее работать с файлами шаблонов, где чистые HTML/CSS/JS с небольшими вставками шаблонных тегов, которые ему уже проще понять), так и в плане уменьшения связанности компонентов, например, рендерить данные не в HTML, а в JSON, тем самым мы избавимся от жёсткой привязки скрипта бизнес-логики к логике отображения.
Хотя, с PHP я дела не имел особо, пару лаб на нём пришлось делать, так что, могу и ошибаться.
Python+Django изначально обязывают использовать шаблонизатор.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38876397
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
начинаешь писать так. потом понимаешь что нужно куча всего. потом выносишь одинаковый функционал в одельные функции. называешь "шаблонизатором"

Вуаля.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38876416
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НестерНу так какая разница между вставками {$title} и <?php $title > ??Первый вариант работает и в шаблоне Smarty и в PHP, второй вообще не работает в приведённом виде. Чтоб заработало, нужно писать <?php echo $title ?> . Теперь попробуйте сравнить удобочитаемость и вероятность допущения ошибки по каждому из вариантов.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38876537
AlexSes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Нестер
Однажды, я также как и вы задумался об этом: 'нужно ли мне это?'. Подключил к своему проекту шаблонизатор twig... Было очень непривычно, после использования всяких пхп-шных вставок, да новшество синтаксиса twig требовал поминутного заглядывания в справку по шаблонизатору.
Но прошло какое-то время и теперь я понимаю, что это очень удобно, и теперь можно запросто отделить мух от котлет:)
PS: имхо, суммарное количество кода, правда, становится больше.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38876547
Нестер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

Да конечно, забыл echo........)

Вообщем ясно, когда всё усложняется, то нужен блэкджэк и ещё что нибудь - это и есть шаблонизаторы )
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38876809
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нестер,
"методологии экстремального программирования"
Первый принцип:Вам не обязательно это нужно.
Второй:Сделайте самый простой работающий вариант.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38877352
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НестерДа конечно, забыл echo........)И вопросительный знак не туда вляпался. Итого - две ошибки на 20 знаков текста. Понимаю, что по запарке. Однако, как раз запарки то и провоцируют на ошибки.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38877617
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НестерПривет всем.
Подскажите начинающему программисту, а зачем нужна шаблонизация в виде smarty и ему подобные?
Ведь куча всякого кода, зачем...

Если можно в одной странице прописать
<?php

$a="Заголовок";
require "header.php";

в header.php файле принять переменную

<p> Здесь: <?php $a > </p>

Зачем городить огороды с шаблонизаторами?

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

просто некоторым жить трудно, вот и придумывают некую ересь. иногда даже не плохо получается.

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

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

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

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

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

так что. плюсы есть. точно также как полезен йогурт, но если сесть его ведро буздумно...то прийдёться занять на сутки стратегическую высоту 45см над уровнем пола в параше(высота толчка)
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38878474
Фотография Алексей Смирнов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НестерПривет всем. Подскажите начинающему программисту, а зачем нужна шаблонизация...

Я всё пишу в PHP, он весь код HTML собирает в одну строковую переменную $strHTML, которую в конечном итоге показываю в браузере. Вставки в виде <?php a$ ?> оказались неудачными хотя бы потому, что они не позволяют делать динамичные страницы. В любом случае приходится PHP-код хранить в отдельном файле от HTML, чтобы вызывать этот файл на исполнение через AJAX. Если PHP внутри кода HTML, то его через AJAX уже не вызовешь.

И я добился у себя в проекте такого удобства, что основной шаблон HTML могу увидеть - как он будет выглядеть в обычном HTML-редакторе до того, как он попадет на сервер. Блоки кода вставляю в шаблон через поиск-замену между комментариями <!-- НАЧАЛО ТАКОГО-ТО БЛОКА-->..... <!-- КОНЕЦ ТАКОГО-ТО БЛОКА -->
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38878495
DeLemur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нестер,

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

Ну когда сам пишешь проект с нуля типа, то примерно знаешь, где мухи лежат, а где котлетки. А когда приходиться разбираться в чужом коде, то лучше когда есть папочки типа: template, functions и тд. И сразу становиться понятно, где, что можно и нужно искать и править и тд.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38878519
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Смирновчто они не позволяют делать
сдаётся мне, что просто готовить не умеешь
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38878540
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeLemurЕсли не большие проекты, то скорей всего лучше без всяких шаблоновНе могу в полной мере согласиться. Даже если проектик на три веб-странички, все равно, его удобнее делать хотя бы с минимумом шаблонов. Конечно, я не призываю для простого проекта использовать такой навороченный шаблонизатор, как Smarty. Конфигурация страниц в любом случае подчиняется каким-то минимальным требованиям HTML - head, стили, метатеги, скрипты, body со своими менюшками, основным блоком, футером - вот уже неизменная от страницы к странице структура со своими постоянными и изменяюшимися фрагментами. Шаблон? Конечно, шаблон. Простейший, средствами PHP. Постоянные фрагменты пишем прямо в коде шаблона в формате heredoc, изменяющиеся подключаем через переменные. Надо будет сделать одно глобальное изменение - правим один файл.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38878554
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

противоречия нет - шаблоны - с фрагментами PHP, библиотечный код - отдельно

речь о том что нет особого смысла изобретать дополнительный шаблонный яхык
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38878563
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей СмирновНестерПривет всем. Подскажите начинающему программисту, а зачем нужна шаблонизация...

Я всё пишу в PHP, он весь код HTML собирает в одну строковую переменную $strHTML, которую в конечном итоге показываю в браузере. Вставки в виде <?php a$ ?> оказались неудачными хотя бы потому, что они не позволяют делать динамичные страницы. В любом случае приходится PHP-код хранить в отдельном файле от HTML, чтобы вызывать этот файл на исполнение через AJAX. Если PHP внутри кода HTML, то его через AJAX уже не вызовешь.

И я добился у себя в проекте такого удобства, что основной шаблон HTML могу увидеть - как он будет выглядеть в обычном HTML-редакторе до того, как он попадет на сервер. Блоки кода вставляю в шаблон через поиск-замену между комментариями <!-- НАЧАЛО ТАКОГО-ТО БЛОКА-->..... <!-- КОНЕЦ ТАКОГО-ТО БЛОКА -->

чтото нето. ну тоесть правильно, но не то.

то что ты назвал проблемами, это да, проблемы, но решаемые елементарно и без костылей.

и главное. УЧИТЫВАЯ что шаблонизатор сделан на пхп, то сразу стаёт очевидным, что если у вас без шаблонизатора трудность А, то вы её можете обойти (как минимум подсмотреть как шаблонизатор написан)

шаблонизатор нужно использовать если именно серия трудностей...чтоб не пилить велосипеды, то использовать ,а если отдельные вещи, вот как Смирнов, то поддерживаю его, придумал себе выход, работает, и молодец. в отличии от того кто ради одной команды мейл винтит мейлер, ради одного нюанса смарти, и потом сидит и ищет ошибки дольше когда чтото не так.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38878568
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453вот как Смирнов, то поддерживаю его, придумал себе выход
выход придумал, названия ob_* функций запомнить не смог похоже
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38878695
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НестерЗачем городить огороды с шаблонизаторами?


чтоб код проекта был читаем и поддерживаем!

Да и что б каждый раз велосипет не изобретать!!
так как интересно это только по самой первости и потом хоть волком вой!
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38878711
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZК тому же PHP сам является шаблонизатором
И это ужасно.
Двадцать лет назад интернет был в зачаточном состоянии, для задач сайтостроения двадцатилетней давности язык-шаблонизатор - это нормальное решение. Википедия нам говорит, что ПХП это не что иное как " препроцессор гипертекста ", то есть средство обработки текстовых данных, да к тому же еще "Инструмент для создания персональных веб-страниц". Короче говоря, первоначально ПХП не задумывался как язык программирования и тем более как профессиональный инструмент. Его ниша - автоматизация рутинных операций вёрски HTML-разметки для продвинутых любителей. Собственно, эту задачу - автоматизацию вёрстки и выполняют шаблонизаторы: jinja, mako, хамелеон, смарти - тысячи их, и все они с той или иной степенью сложности, удобства, функциональности выполняют одну задачу - препроцессинг гипертекста. Никому не придет в голову взять шаблонизатор и писать на нём бизнес-логику. Беда ПХП в том, что с годами этот шаблонизатор разросся до жуткого уродливого комбайна, привлекающего двоечников кажущейся простотой. Его надо было закопать сразу, как только оно научилось коннектится к СУБД, потому что это нарушает первое правило робототехники: никаких побочных эффектов в слое представления.
Сейчас изобретено столько различных архитектур позволяющих эффективно разделить по слоям код разной ответственности, что размышления аля "а нахрена оно мне, если есть няшный пхп где в кучу можно валить клиентский код и инсерты в базу" похожи на рассуждения Шарикова о том, как всё взять и поделить.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38879378
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHookNekZК тому же PHP сам является шаблонизатором
И это ужасно.
Двадцать лет назад интернет был в зачаточном состоянии, для задач сайтостроения двадцатилетней давности язык-шаблонизатор - это нормальное решение. Википедия нам говорит, что ПХП это не что иное как " препроцессор гипертекста ", то есть средство обработки текстовых данных, да к тому же еще "Инструмент для создания персональных веб-страниц". Короче говоря, первоначально ПХП не задумывался как язык программирования и тем более как профессиональный инструмент. Его ниша - автоматизация рутинных операций вёрски HTML-разметки для продвинутых любителей. Собственно, эту задачу - автоматизацию вёрстки и выполняют шаблонизаторы: jinja, mako, хамелеон, смарти - тысячи их, и все они с той или иной степенью сложности, удобства, функциональности выполняют одну задачу - препроцессинг гипертекста. Никому не придет в голову взять шаблонизатор и писать на нём бизнес-логику. Беда ПХП в том, что с годами этот шаблонизатор разросся до жуткого уродливого комбайна, привлекающего двоечников кажущейся простотой. Его надо было закопать сразу, как только оно научилось коннектится к СУБД, потому что это нарушает первое правило робототехники: никаких побочных эффектов в слое представления.
Сейчас изобретено столько различных архитектур позволяющих эффективно разделить по слоям код разной ответственности, что размышления аля "а нахрена оно мне, если есть няшный пхп где в кучу можно валить клиентский код и инсерты в базу" похожи на рассуждения Шарикова о том, как всё взять и поделить.

ты верно подметил, но упустил один важный момент!!!
согласно любой медицинской теории, здоровье - это мыть руки с мылом всегда, не пить из горла(там бактерии), стирать гладить одежду гигиена!!! мыть всегда яблоки, здоровый сон, не сидеть до позна и прочееееееее.
делиться по категориям - гигиена, питание, здоровый образ жизни...

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

и вот вопрос - ты шариков???

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

а вот всё остальное - по мере необходимости в меру возможности.

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

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

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

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

лозунг твой основан на верной мысли, но ты явно эту мысль не понимаешь.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38879403
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453учись и не забивай себе голово сейчас смарти
alex564657498765453он не являеться критичным,
alex564657498765453а вот будет смарти, а бизнес логика в модели, и там ошибку
alex564657498765453по фразе изобретено столько различных архитектур, лично явижу человека

очень, очень важно мнение твоё чурка-сан
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38879657
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смарти - это что-то типа крутое, что ушло не в ту сторону, а потому стало излишним и не нужным. (щас пинать меня начнут наверное, но всё же выскажу своё мнение :) )

Шаблон - это должно быть что-то простое, что просто отображает пришедшие данные. ПОДГОТОВЛЕННЫЕ К ВЫВОДУ данные.
Нафига же в таком случае в Смарти наворотили циклы, условия и кучу разной фигни? Сами что-ли не разобрались как это работает?

Берём один из общепринятых паттернов - MVC
Модели - бизнес логика
Контроллер - обработка данных из моделей, и подготовка их к выводу (ну и наоборот, подготовка введённых данных для работы)
Представление - вывод ПОДГОТОВЛЕННЫХ контроллером данных.

Учитывая то, что в шаблонизатор (а именно в парсер шаблонов) поступают строго определённые и ожидаемые структуры данных, то и само ядро шаблонизатора может решать, нужно ли тут данные выводить в цикле, или же это единичный объект, или же вообще выводить ничего не надо.

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

Ну... в общем пинайте
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38879664
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,
подобный подход реализован, например, тут
практика показывает, что это неудобно.
Когда нужно внутри цикла реализовать что-то чуть более сложное, чем в туториале, получается каша и разметка становится совершенно нечитаемой. Например, нужна полосатая таблица неизвестного заранее размера, каждую пятую строку надо выделить цветом, каждый третий столбец содержит сумму предыдущих.
Или постройка нетривиального дерева в бутстрапе. С циклами это делается элементарно.
...
Рейтинг: 0 / 0
Зачем нужна шаблонизация?
    #38879725
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHookПрограмёр,
подобный подход реализован, например, тут
практика показывает, что это неудобно.
Когда нужно внутри цикла реализовать что-то чуть более сложное, чем в туториале, получается каша и разметка становится совершенно нечитаемой. Например, нужна полосатая таблица неизвестного заранее размера, каждую пятую строку надо выделить цветом, каждый третий столбец содержит сумму предыдущих.
Или постройка нетривиального дерева в бутстрапе. С циклами это делается элементарно.

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

Ну вот пример шаблонизации, о которой я говорю:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class ViewObject{
  public function __construct($array){
    foreach($array as $prop=>$val){
      $this->$prop=$val;
    }
  }
}

$table = array()
foreach($rows as $n=>$row){
  $row["class"] = (($n+1)%5) ? ((($n+1)%2) ? "standart" : "special") : "superSpecial"; 
// row - массив данных строки таблицы, теперь с указанием класса
  $table[] = new ViewObject($row);
}
$templator->view("tableView", array("table"=>$table));




Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<table>
  <template row=table>
    <tr class="{$row->class}">
      <td>{$row->col1}</td>
      <td>{$row->col2}</td>
      <td>{$row->col3}</td>
    </tr>
  </template>
</table>




И что тут такого запутанного или сложного? Обрати внимание, что в шаблоне я никак не указываю тип вообще. То есть, если туда попадёт массив - будет массив строк, если объект - одна строка, если false или пустой массив - пустая таблица (без строк).

Итак, такой шаблон будет в себя включать 4 основных конструкции:
1. <template ['templateSource'] mainVar=var1 [v1=var2 ...] /> - загрузить подшаблон
2. {$obj->attr} - вставить значение атрибута объекта
3. {$var} - по сути $var - это тот же объект ViewObject, но с одним единственным атрибутом, который и будет вставлен
4. для первой конструкции !var1 - отрицание, для реализации вывода типа "или одно или другое". Такое не обязательно, но его присутствие добавит удобства.

P.S. шаблонизацию посредством тэга, можно заменить на любую другую конструкцию (которая идэшкой будет выделяться определённым цветом, и будет более заметна в общей массе. Это так... пример на коленке :) )
...
Рейтинг: 0 / 0
25 сообщений из 120, страница 1 из 5
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Зачем нужна шаблонизация?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]