Smarty テンプレート ファイル内で PHP を使用することは、以前のバージョンの Smarty では可能でしたが、現在は推奨されていません。
ただし、下位互換性ラッパーを使用することで引き続き実行できます。
これにより、次のようにして、テンプレート ファイル内から PHP を使用できるようになります。
{php}echo "Hello World";{/php}
これが引き起こす可能性のある問題や問題を知っている人はいますか?
すでに与えられたコメントを完全な回答に拡張するために、任意の PHP コードを埋め込むことの問題は、PHP と Smarty の間の分離を壊すことです。
Smarty は直接 PHP にコンパイルされるため、Smarty で記述したものはすべて純粋な PHP で記述できます。
<?= $foo ?>
{$foo}
大丈夫です<?php if ( $expr ): ?> Hello <?php endif; ?>
あまりにも{if $expr} Hello {/if}
悪くないから<?= htmlspecialchars(strtoupper($foo ?: 'Hello')); ?>
に{$foo|default:'Hello'|upper|escape:html}
は少し難しいですSmarty を使用することの主な利点 (これらはすべて、使用すると基本的に無効になります{php}
):
Smarty と PHP を混在させた場合に得られる唯一の利点は、上で示した修飾子の例のように、Smarty 構文の部分が PHP の同等のものよりも読みやすいことです。