Heim  >  Artikel  >  Backend-Entwicklung  >  构建PHP框架构建模版引擎

构建PHP框架构建模版引擎

高洛峰
高洛峰Original
2016-10-31 14:32:25974Durchsuche

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

安全,比如默认转义输出

可读性好

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

PHP 模板引擎有多大意义?

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

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

输出变量值

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

Hello, {{ $name }}!

输出未转义的变量值

Hello, {!! $name !!}!

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

循环

@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

引入其他视图

@include(&#39;view.name&#39;, [&#39;some&#39; => &#39;data&#39;])

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

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

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn