PHPフレームワークの構築とテンプレートエンジンの構築

高洛峰
リリース: 2016-10-31 14:32:25
オリジナル
1013 人が閲覧しました

実際、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&#39;m looping forever.</p>@endwhile
ログイン後にコピー

他のビューの紹介

@include(&#39;view.name&#39;, [&#39;some&#39; => &#39;data&#39;])
ログイン後にコピー

今のところはこれだけたくさん定義すれば基本的には十分です。特別なニーズがある場合は、原則として 1 つを作成できれば、他のものを追加することもできます。

次に、PHP が認識できないような書き方を定義しましたので、それを PHP が認識できるものに変換する必要があります。

最も単純な例として、{{ $name }} のようなコンテンツを取得した場合、それを に変換するだけで済みます。このようにして、それを識別し、対応する変数値を出力できます。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート