ホームページ  >  記事  >  バックエンド開発  >  PHPフレームワークの構築とテンプレートエンジンの構築

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

高洛峰
高洛峰オリジナル
2016-10-31 14:32:25974ブラウズ

実際、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 }} のようなコンテンツを取得した場合、それを に変換するだけで済みます。このようにして、それを識別し、対応する変数値を出力できます。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。