2009-11-05 3 views
28

Недавно я обнаружил фреймворк PHP (который является удивительным) и читал нить об использовании его в сочетании с шаблоном для моделирования, например Smarty или Twig. Мой вопрос, зачем беспокоиться? Разумеется, структура MVC, по определению, является шаблоном. Даже «сырой» PHP, возможно, является шаблоном. Каковы возможные преимущества добавления еще одного уровня абстракции поверх того, что уже присутствует в таких рамках, как Kohana?Зачем использовать шаблонный двигатель с каркасом?

EDIT - Я понимаю, что рамки MVC это не то же самое, как шаблонизатор, но верно V часть делает ту же работу? Возможно, лучший способ выражения вещей был бы; зачем добавить шаблонный движок поверх V-части структуры MVC?

ответ

17

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

  1. Создание разметки, который повторяется по всему сайту в согласованном формате проще, плюс вы можете обновить его позже, не много из grepping.
  2. Если это для реальной компании, люди, определяющие контент, вряд ли будут действительно знакомы с HTML, а тем более с PHP. Имея простой язык шаблонов, который сохраняет стили, выглядящие правильно и генерирует правильную разметку без значительного знания кода, очень удобно.
8

Если вы не позволяют короткие теги,

{$foo} 

гораздо более читабельным, чем

<?php echo $foo; ?> 

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

+2

Это имеет смысл, просто сокращение нажатий клавиш может быть находкой! :) – Mathew

+1

Лучшее сравнение - это самое быстрое * возможное * экранирование: '{$ user_data | escape}' или '{$ user_data}' vs Kzqai

+1

С короткими тегами на нем просто ' '. – DanMan

16

Во-первых, необработанный PHP не является шаблоном.

Далее, среда MVC определяет, что структура разделена на Model, View и Control. Это не означает, что у рамки есть механизм шаблонов, хотя представление может быть интегрировано с собственным или внешним механизмом шаблона. Таким образом, структура может иметь или не иметь шаблонный движок.

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

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

+0

Итак, вы говорите, что использование механизма шаблонов поверх фреймворка стоит того, когда вы уже знаете синтаксис механизма шаблонов? Это единственное + ve? – Mathew

+0

Также, пожалуйста, вы можете расширить свой комментарий о MCV! = Templating engine, так как это действительно точка моего вопроса. Разумеется, часть просмотра MCV * является * шаблоном? – Mathew

+0

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

6

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

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

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

+1

Я вижу вашу точку зрения, но я бы не рассматривал необработанный PHP слишком много для целей презентации; Я очень рад рискнуть повесить себя на спагетти PHP! – Mathew

+0

@MattW Просто бросайте его туда, но это невероятно непривлекательная практика, и большинство людей не хотят работать с кем-то, кто делает подобные вещи. –

+1

а ?! Зная язык сценариев и используя его, вместо того, чтобы полагаться на потенциально ненужный уровень абстракции, это непривлекательная практика ... Этот комментарий суммирует вещи довольно хорошо; http://www.talkphp.com/general/4001-template-engine.html#post22329 – Mathew

2

Mauris уже рассмотрел, почему MVC! = Шаблонный движок, но я хотел бы добавить, что чем мощнее механизм шаблонов, тем чище и короче ваши шаблоны. Это делает его особенно легким для людей, которые не знакомы с PHP для их редактирования (например: если разработчику/разработчику переднего плана необходимо отредактировать HTML). В общем, MVC не обладают такой функциональностью.

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

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

+0

Разделение интерфейсного разработчика является хорошей причиной. +1 – Mathew

1

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

+0

Интересный сайт сравнения скорости ... – Kzqai