Maison > développement back-end > tutoriel php > 构建PHP框架构建模版引擎

构建PHP框架构建模版引擎

高洛峰
Libérer: 2016-10-31 14:32:25
original
1027 Les gens l'ont consulté

其实关于PHP应不应该使用模版引擎,网上也有不少争论,在这里罗列一些使用模版引擎的优点。

安全,比如默认转义输出

可读性好

相关内容可以参考一下知乎的讨论

PHP 模板引擎有多大意义?

为什么PHP中ThinkPHP有做类似模板引擎的东西?smarty也是?这些到底有何用?

首先末来确定一下思路,我们先要确定在模版中使用怎样的写法,参考 Laravel 的 Blade 模板,定义如下几种简单的写法。

输出变量值

{{ }} 表达式的返回值将被自动传递给 PHP 的 htmlentities 函数进行处理,以防止 XSS 攻击。

Hello, {{ $name }}!
Copier après la connexion

输出未转义的变量值

Hello, {!! $name !!}!
Copier après la connexion

If 表达式

通过 @if、@elseif、@else 和 @endif 指令可以创建 if 表达式。

@if (count($records) === 1)
    I have one record!@elseif (count($records) > 1)
    I have multiple records!@else
    I don't have any records!@endif
Copier après la connexion

循环

@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}@endfor@foreach ($users as $user)
    <p>This is user {{ $user->id }}</p>@endforeach@while (true)
    <p>I&#39;m looping forever.</p>@endwhile
Copier après la connexion

引入其他视图

@include(&#39;view.name&#39;, [&#39;some&#39; => &#39;data&#39;])
Copier après la connexion

暂时先定义这么多,基本够用。如果有特殊的需要,可以自己添加,其原理基本是一致的,会写一个,其他的就都能写出来。

然后再考虑如何处理,我们定义出了这样的写法,PHP 是识别不了的,我们需要将它转化成 PHP 能够识别的样子。

举个最简单的例子,当我们拿到{{ $name }}这样一段内容时,我们只需要将它转化成这样,就可以识别了,输出相应的变量值。


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal