其实关于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'm looping forever.</p>@endwhile
引入其他视图
@include('view.name', ['some' => 'data'])
暂时先定义这么多,基本够用。如果有特殊的需要,可以自己添加,其原理基本是一致的,会写一个,其他的就都能写出来。
然后再考虑如何处理,我们定义出了这样的写法,PHP 是识别不了的,我们需要将它转化成 PHP 能够识别的样子。
举个最简单的例子,当我们拿到{{ $name }}这样一段内容时,我们只需要将它转化成这样,就可以识别了,输出相应的变量值。