実際、PHP がテンプレート エンジンを使用するべきかどうかについては、インターネット上で多くの議論があります。テンプレート エンジンを使用する利点をいくつか紹介します。
デフォルトのエスケープ出力など安全
可読性が良い
関連コンテンツについては、Zhihu のディスカッションを参照してください
PHP テンプレート エンジンはどの程度重要ですか?
なぜ ThinkPHP は PHP のテンプレート エンジンに似た機能を行うのですか?スマーティも?これらは何に使われますか?
まずはアイデアを決めましょう。LaravelのBladeテンプレートを参考に、以下の簡単な書き方を定義します。
出力変数値
{{ }} 式の戻り値は、XSS 攻撃を防ぐための処理のために PHP の htmlentities 関数に自動的に渡されます。
Hello, {{ $name }}!
エスケープされていない変数値を出力する
Hello, {!! $name !!}!
If式
If式は、@if、@elseif、@else、および@endifディレクティブを使用して作成できます。
@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'])
今のところはこれだけたくさん定義すれば基本的には十分です。特別なニーズがある場合は、原則として 1 つを作成できれば、他のものを追加することもできます。
次に、PHP が認識できないような書き方を定義しましたので、それを PHP が認識できるものに変換する必要があります。
最も単純な例として、{{ $name }} のようなコンテンツを取得した場合、それを に変換するだけで済みます。このようにして、それを識別し、対応する変数値を出力できます。