PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines

 

 

最简单模板引擎, 只要一个函数就可以完成:

function iks_template_engine($template = '', $data = array())
{
    if($template AND $data)
    {
        $stack    = array();
/*        $template = str_replace('<', '<?php echo \'<\'; ?>', $template);*/
        $template = str_replace('{{?', '<?php  ', $template);
        $template = str_replace('?}}', ' ?>', $template);
        $template = preg_replace('~\{\{(\w+)\}\}~', '<?php echo $data[\'$1\'] ?? "{\'$1\'}"; ?>', $template);
        $template = preg_replace('~\{\{LOOP:(\w+)\}\}~', '<?php $elements = $data[\'$1\']??array(); foreach ($elements as $element): $stack[] = $data; foreach ($element as $key => $value): $data[$key] = $value; endforeach; ?>', $template);
        $template = preg_replace('~\{\{ENDLOOP:(\w+)\}\}~', '<?php $data = array_pop($stack); endforeach; ?>', $template);
        $template = '?>' . $template;

        ob_start ();
        eval ($template);
        $output = ob_get_clean();
    }

    return $output ?? '';
}

 

用法:

$data = array(
        'title' => 'The Title',
        'subtitle' => 'The Subtitle',
        'footer' => 'Foot',
        'people' => array(
                array('name'=>'1. Jack','surname'=>'Ma'),
                array('name'=>'2. Pony','surname'=>'Ma'),
                array('name'=>'3. Jun','surname'=>'Lei'),
        ),
        'page' => 'page',
);

$template = <<<EXO
<html>
<title>{{title}}</title>
<body>
<h1>{{subtitle}}</h1>
{{LOOP:people}}
<b>{{name}}</b> {{surname}}<br />
{{ENDLOOP:people}}
<br /><br />
<i>© {{? echo date('Y') ?}} {{footer}}</i>
</body>
</html>
EXO;

echo iks_template_engine($template, $data);

 

 

当然, 以上一个函数功能简单, 如果你想要更复杂的功能, 可以选择以下:

 

当我们在PHP中讨论模板引擎时,许多开发人员会告诉你这不是必要的,而且浪费学习时间和资源,因为PHP本质上是一个模板引擎。但是,与语言模板引擎的新提议不同,PHP语法在过去几年没有发展。这是开发人员非常关键的讨论主题,因此完全取决于您在PHP项目中实现或使用模板引擎。我们只能说一件事,如果您正在考虑在项目中实施模板引擎,我们可以向您推荐几种最好的模板引擎。

我们将与您分享7个最基于PHP的开源模板引擎。

 

7. Mustache

Github上

PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines
PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines

受ctemplate和et的启发,Mustache是​​一种框架无关的方式来呈现无逻辑的视图。正如ctemplates所说,“它强调将逻辑与表示分离:不可能在这种模板语言中嵌入应用程序逻辑。” 将Mustache视为您观点的替代品。您可以将视图分为两部分:PHP类和HTML模板,而不是由随机助手和任意逻辑组成的ERB或HAML视图。您的所有逻辑,决策和代码都包含在您的视图中。您的所有标记都包含在您的模板中。模板在您的视图中只执行参考方法。这种严格的分离使您可以更轻松地编写干净的模板,更轻松地测试您的视图,以及在应用程序前端工作的更多乐趣。以下代码段提供了Mustaches语法的预览:

Hello {{name}}
You have just won {{value}} dollars!
{{#in_ca}}
Well, {{taxed_value}} dollars, after taxes.
{{/in_ca}}

 

6. Plates

Github上

PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines
PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines

Plates是一个本机PHP模板系统,它快速,易于使用且易于扩展。它的灵感来自优秀的Twig模板引擎,并致力于为现有的PHP模板带来现代模板语言功能。Plates专为喜欢使用本机PHP模板而不是编译模板语言的开发人员而设计,例如Twig或Smarty。此模板引擎功能:

  • 原生PHP模板,无需学习新语法
  • Plates是模板系统,而​​不是模板语言
  • Plates鼓励使用现有的PHP函数
  • 使用模板布局和继承增加代码重用
  • 用于将模板分组到命名空间的模板文件夹
  •  跨模板共享数据
  • 将数据预分配给特定模板
  • 内置逃脱助手
  • 使用功能和扩展轻松扩展
  • 框架无关,将适用于任何项目
  • 分离设计使模板易于测试
  • Composer ready和PSR-2兼容

以下代码段提供了plate模板引擎语法的预览:

<?php $this->layout('template', ['title' => 'User Profile']) ?>

<h1>Welcome!</h1>
<p>Hello <?=$this->e($name)?></p>

<h2>Friends</h2>
<ul>
    <?php foreach($friends as $friend): ?>
        <li>
            <a href="/profile/<?=$this->e($friend->id)?>">
                <?=$this->e($friend->name)?>
            </a>
        </li>
    <?php endforeach ?>
</ul>

<?php if ($invitations): ?>
    <h2>Invitations</h2>
    <p>You have some friend invites!</p>
<?php endif ?>

 

5. Blade

第一个选择Github

第二个选项Github

Blade是Laravel提供的简单而强大的模板引擎。与其他流行的PHP模板引擎不同,Blade不会限制您在视图中使用纯PHP代码。实际上,所有Blade视图都被编译为纯PHP代码并进行缓存,直到它们被修改,这意味着Blade为您的应用程序添加了基本上零开销。Blade视图文件使用.blade.php文件扩展名。

可怜的是,在框架之外的laravel团队没有正式支持刀片,并且有许多其他公共实现应该像原始刀片模板引擎一样工作,但并非所有这些都是值得的。我们建议您在单个文件中使用2个免费刀片(MIT许可证,即密切源/私有代码可以),并且没有外部库的单一依赖关系。

 

4. Volt

Volt是一种用C语言编写的超快速且设计友好的模板语言。它为您提供了一组帮助程序,以便以简单的方式编写视图。Volt与Phalcon的其他组件高度集成,就像您可以将其用作应用程序中的独立组件一样。 Volt的灵感来自最初由  Armin Ronacher 创作的  Jinja 。因此,许多开发人员将使用与类似模板引擎相同的语法处于熟悉的领域。Volt的语法和功能已经通过更多元素得到增强,当然还有开发人员在使用Phalcon时习惯的性能。 以下代码段提供了Volt代码的快速预览:

{# app/views/products/show.volt #}

{% block last_products %}

{% for product in products %}
    * Name: {{ product.name|e }}
    {% if product.status === 'Active' %}
       Price: {{ product.price + product.taxes/100 }}
    {% endif  %}
{% endfor  %}

{% endblock %}

 

3. Dwoo

Dwoo(/diː-wu:/)(风格化为dwoo)是一个用于PHP的现代,灵活且面向对象的模板引擎,有助于将表示(HTML / CSS)与应用程序逻辑分离。在许多方面,dwoo与Smarty的模板和插件兼容,因为dwoo的作者基于Smarty引入Web开发世界的一般想法。由Jordi Boggiano于2008年初开始,这个想法源于Smarty越来越老。它承载着它的年龄,具有与新版本相比不一致的旧功能,为PHP4编写,它没有利用PHP5在该领域的更高级功能。

Dwoo的模板引擎利用了PHP5提供的新功能。所以它是一个编写良好的,面向对象的模板引擎,与Smarty相比,它允许更容易和更快的开发,并且它仍然足够兼容,允许使用Smarty的开发人员顺利过渡到dwoo。以下代码段提供了Dwoo语法的预览:

<!DOCTYPE html>
<html>
    <head>
        <title>My Webpage</title>
    </head>
    <body>
        <ul id="navigation">
        {foreach $navigation item}
            <li><a href="{$item.href}">{$item.caption}</a></li>
        {/foreach}
        </ul>

        <h1>My Webpage</h1>
        {$a_variable}
    </body>
</html>

 

2. Smarty

PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines
PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines

Smarty是PHP的模板引擎,有助于将表示(HTML / CSS)与应用程序逻辑分离。这意味着PHP代码是应用程序逻辑,并与表示分离。在幕后,Smarty将模板的副本编译为PHP脚本。这样您就可以获得模板标记语法和PHP速度的好处。首次调用每个模板时,编译会发生一次,然后从该点开始使用编译版本。Smarty会为您处理此问题,因此模板设计人员只需编辑Smarty模板,而无需管理已编译的版本。这种方法使模板易于维护,并且可以非常快速地保持执行时间。由于编译版本是PHP,因此APC或ZendCache等操作码加速器继续处理编译的脚本。

Smarty是一个模板引擎,可以作为应用程序的(V)iew组件。Smarty可以轻松地耦合到上面列出的任何引擎作为视图组件。与任何其他软件没什么不同,Smarty有一个学习曲线。Smarty不保证良好的应用程序设计或正确的表示分离,这仍然需要有能力的开发人员和网页设计师来解决。以下代码段提供了smarty语法的预览:

{include file="header.tpl" title="Info"}

User Information:<p>

Name: {$name|capitalize}<br>
Address: {$address|escape}<br>

{include file="footer.tpl"}

 

1. twig

Github上

PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines
PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines

Twig是PHP的模板语言,在新的BSD许可证(代码和文档)下发布。Twig使用类似于Django和Jinja模板语言的语法,这些语言启发了Twig运行时环境。

  • 快速:Twig 模板编译为简单优化的PHP代码。与常规PHP代码相比,开销降至最低。
  • 安全:Twig具有沙盒模式来评估不受信任的模板代码。这允许Twig用作用户可以修改模板设计的应用程序的模板语言。
  • 灵活:Twig由灵活的词法分析器解析器提供支持。这允许开发人员定义自己的自定义标签和过滤器,并创建自己的DSL。

Twig支持轻松构建强大模板所需的一切:多重继承,块,自动输出转义等等。语法易于学习,并经过优化,使网页设计人员能够快速完成工作,而不会妨碍他们。以下代码段提供了此templat引擎语法的预览:

<div class="form-control">
    <i class="fa fa-calendar"></i> {{ form_label(form.dueDate) }}
    {{ form_widget(form.dueDate) }}

    <small>{{ form_help(form.dueDate) }}</small>

    <div class="form-error">
        {{ form_errors(form.dueDate) }}
    </div>
</div>

 

荣誉奖

Latte

Github上

PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines
PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines

Latte是PHP的模板引擎,它可以简化您的工作并确保输出受到保护,以防止漏洞,例如XSS。

  • 拿铁很快: 它将模板编译为普通优化的PHP代码。
  • Latte是安全的: 它是第一个引入内容感知转义的PHP引擎。
  • Latte会说您的语言: 它具有直观的语法,可以帮助您轻松构建更好的网站。

拿铁语法是:

<ul n:if="$items">
{foreach $items as $item}
	<li id="item-{$iterator->counter}">{$item|capitalize}</li>
{/foreach}
</ul>

 

文档可以在网站找到

如果你知道另一个很棒的基于PHP的模板引擎,请在评论框中与社区分享。

 

 

本文: PHP模板引擎函数, PHP最简单的模板引擎, PHP the easiest template engines, Top 7: Best Open Source PHP Template Engines

Leave a Reply