構建PHP架構構建模版引擎

來源:互聯網
上載者:User
其實關於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 }}這樣一段內容時,我們只需要將它轉化成這樣,就可以識別了,輸出相應的變數值。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.