其實關於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) This is user {{ $user->id }}
@endforeach@while (true) I'm looping forever.
@endwhile
引入其他視圖
@include('view.name', ['some' => 'data'])
暫時先定義這麼多,基本夠用。如果有特殊的需要,可以自己添加,其原理基本是一致的,會寫一個,其他的就都能寫出來。
然後再考慮如何處理,我們定義出了這樣的寫法,PHP 是識別不了的,我們需要將它轉化成 PHP 能夠識別的樣子。
舉個最簡單的例子,當我們拿到{{ $name }}這樣一段內容時,我們只需要將它轉化成這樣,就可以識別了,輸出相應的變數值。