首页  >  文章  >  后端开发  >  构建PHP框架构建模版引擎

构建PHP框架构建模版引擎

高洛峰
高洛峰原创
2016-10-31 14:32:25974浏览

其实关于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 }}这样一段内容时,我们只需要将它转化成这样,就可以识别了,输出相应的变量值。


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn