Легкий PHP5 основывал шаблонный класс / система

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

Что-то вроде этого http://www.namepros.com/code/517342-php5-template-class.html - то, на что я смотрю, но что-то, что более устойчиво и доказано.

9
задан Wizzard 10 February 2010 в 07:46
поделиться

6 ответов

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

<h1><?php echo $pageTitle ?></h1>
<div>
    <ul>
    <?php foreach($items as $item): ?>
        <li><?php echo htmlentities($item); ?></li>
    <?php endforeach; ?>
    </ul>
</div>

Если вам нужна дополнительная функциональность, используйте ViewHelper, например, небольшие функции, которые инкапсулируют такие вещи, как добавление имен ссылок или перевод, например,

<table>
<?php foreach($items as $key => $item): ?>
    <tr class="<?php echo oddEven($key)?>">
        <td><?php echo productLink($item->id); ?></td>
        <td><?php echo translate($item->description); ?></td>
    </tr>
<?php endforeach; ?>
</table>

Если это слишком многословно, посмотрите на синтаксис HEREDOC и NOWDOC, и если это все еще не то, что вы ищете, вот список некоторых шаблонизаторов:

Или, если вы чувствуете себя экспериментатором, взгляните на XHP, подход Facebook к расширению шаблонов:

15
ответ дан 4 December 2019 в 06:16
поделиться

Я считаю, что PHP сам по себе является очень мощным механизмом шаблонов.

Если вам просто нужен очень простой шаблонизатор, вы можете обернуть str_replace (), например:

function template($source, array $vars, $return=false) {
    foreach ($vars as $key=>$value) {
        $source = str_replace('{'.$key.'}', $value, $source);
    }
    if ($return) {
        return $source;
    } else {
        echo $source;
    }
}

И есть простой, но гибкий шаблонизатор от symfony , если вам нужен полнофункциональный решение.

0
ответ дан 4 December 2019 в 06:16
поделиться

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

-121--3348357-

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

Вы можете прочитать об этом здесь

-121--3348355-

простейший... просто создайте блоки классов, такие как

class MyBlock implements IHtmlRenderizable{
    private $_vars = array();
    public function addVar($name, $value) { 
        $this->_vars[$name] = $value; return $this; 
    }
    public function toHtml(){
        extract($this->_vars);
        include('/the/template.phtml');
    }
}

, и используйте $ this- > что угодно в шаблоне. или используйте:

$block->addVar('myvar', 'myvalue')->toHtml();

и на шаблоне вы можете получить доступ к нему с помощью $ myvar

0
ответ дан 4 December 2019 в 06:16
поделиться

TWIG

Я бы рекомендовал использовать Twig

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

Читайте также запись в блоге Фабьена Потенсье, где он объясняет потребности в мощном и настраиваемом шаблонизаторе.

TWIG Template code

{% extends "layout.html" %}

{% block title %}
    {{ page.title|escape|title }}
{% endblock %}

{% block content %}
    Content of the page...

    {% for user in users %}
      * {{ user.name }}
    {% else %}
        No user has been found.
    {% endfor %}

{% endblock %}

{# this is a comment in twig syntax #}

Symfony Components

Также если вам нужны дополнительные компоненты для веб-разработки, но у вас уже есть определенная база кода, посмотрите на Symfony Components, который включает дополнительный компонент шаблонизации (упомянутый в ответе XUE Can)

18
ответ дан 4 December 2019 в 06:16
поделиться

Я только что выпустил проект с открытым исходным кодом, который очень упрощает эту задачу. Это «Наследование шаблонов», вдохновленное Django, и позволяет вам наследовать и переопределять части родительского шаблона из дочернего шаблона. Находится здесь:

http://arshaw.com/phpti/

5
ответ дан 4 December 2019 в 06:16
поделиться

Я написал Nest. Это язык шаблонов, основанный на лучших частях JSP, и он компилируется в php-код. Вы пишете свой код в правильно сформированном HTML и можете легко создавать новые теги, чтобы предоставить вам новую функциональность. Есть несколько встроенных стандартных тегов.

http://nest.sourceforge.net/

Выглядит так:

<html xmlns:c="urn:nsttl:HTML_Template_Nest_Taglib_Standard">
  <body>
    <ul>
      <c:foreach items="posts" var="post">
        <li>${post->title}</li>
      </c:foreach>
    </ul>
</body>
3
ответ дан 4 December 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: