Когда начиналась история PHP, было стандартом, что HTML генерировался непосредственно внутри PHP-скриптов. Но случилось так, что возникли некоторые проблемы, когда он превратился в один из самых популярных языков веб-программирования.
Чтобы люди, работающие в крупных проектах, чувствовали себя комфортно со своими задачами, т.е. при разработке веб-сервисов, где был изобретен архитектурный шаблон MVC. M для Model используется для хранения данных и обработки их удобным и воспроизводимым образом. V для View как части, которая отвечает за создание правильного вывода. C для контроллера, который отвечает за отправку команд моделям и т. д., являясь основной логикой приложения.
Когда пользователь отправляет команду в службу, контроллер обрабатывает ее и понимает. Запуск изменений в соответствующих моделях и, возможно, перенаправление действий на другие контроллеры, пока достигнут контроллер представления. Контроллер представления принимает правильное представление, вводит в него сгенерированные данные и выполняет их для создания выходных данных, которые отправляются обратно пользователю. Если шаблон для представления еще не сгенерирован, он запускает механизм шаблонов для этого.
Правильная реализация полного MVC очень помогает как программистам, так и системным архитекторам, разработчикам интерфейсов и т.д. Но когда с одной стороны сложно поддерживать базы данных (поэтому были разработаны ORM), с другой стороны системы трудно поддерживать представления.
Один из принципов MVC заключается в том, что Логика (с огромной буквой "L") есть только в контроллерах. Так что логики во взглядах нет. Использование механизма шаблонов упрощает достижение этого из-за плохой поддержки логики ими самими. Не секрет, что программисты "ленивы" - так что если бы у них был случай ввести в поле зрения какую-то более продвинутую логику, они бы это сделали.
Я предполагаю, что все разработчики интерфейса имеют навыки программирования. Проблема в том, чтобы заставить их остаться с вами. Работа над огромным проектом с большим количеством просмотров (и, следовательно, шаблонов для хаджа) с примешанным к ним PHP сведет их с ума. Гораздо проще читать код, написанный для шаблонизатора.
Идея шаблонизаторов состоит в том, чтобы добавить в систему еще одну часть, которая предлагает, возможно, простой язык, позволяющий использовать базовую логику, такую как циклы и операторы if. С одной стороны, механизм шаблонов получает вид текстового файла, чтобы преобразовать его в файл PHP с добавлением в него гипердозы всего важного HTML.
Если вы разработчик в одиночку, никому не важно, что вы используете файлы, которые смешивают PHP с HTML. Это выглядит, вероятно, близко к этому:
<html>
<head>
<title><?=$title?></title>
<? foreach($metas as $meta) { ?>
<meta name="<?=$meta['name']?>" content="<?=$meta['content']?>"/>
<? } ?>
Но любой разработчик интерфейса предпочел бы работать с файлом, выглядящим так:
<html>
<head>
<title>{{ title }}</title>
{% for meta in metas %}
<meta name="{{ meta.name }}" content="{{ meta.content }}" />
{% endfor %}
для него более высокая читабельность. Это бывает очень удобно, когда шаблон включает какой-то встроенный javascript. В конце концов, вы получите тот же файл, который вы можете создать вручную, но этот файл создается для вас и сохраняется, поэтому он больше не создается до тех пор, пока основной файл не изменяется. Мы генерируем наши шаблоны во время развертывания, что не влияет на производительность, особенно сейчас, когда движок Volt написан на C.
Еще одна удобная особенность шаблонизаторов заключается в том, что (приложив некоторые усилия) можно генерировать минимизированные шаблоны на лету. Вы никогда не уменьшите свой шаблон, созданный вручную, за исключением случаев, когда вы планируете покончить жизнь самоубийством.
Итак, глобально это случай:
чтобы вы могли передавать файлы .volt парню, работающему с интерфейсом
но это эффект работы в шаблоне MVC. И Phalcon создан для выполнения принципов MVC. Я даже не пытаюсь догадаться, как вам удалось работать с этой программкой в течение ~2,5 лет, не используя шаблонизатор. Возможно, вы работаете один.
person
yergo
schedule
28.01.2016