在以前版本的Smarty中,可以在Smarty模板文件中使用PHP,但现在已弃用。
但是,您仍然可以使用向后兼容包装器来完成此操作。
这样可以通过以下方式在模板文件中使用PHP:
{php}echo "Hello World";{/php}
有没有人知道这可能导致的任何问题或问题?
答案 0 :(得分:1)
要将已经给出的注释扩展为完整的答案,嵌入任意PHP代码的问题在于它打破了PHP和Smarty之间的分离。
由于Smarty直接编译为PHP,因此您在Smarty 中编写的所有内容都可以用纯PHP编写,并且可能会或者可能不会以可读的方式编写,例如。
<?= $foo ?>
{$foo}
很好<?php if ( $expr ): ?> Hello <?php endif; ?>
{if $expr} Hello {/if}
也不错<?= htmlspecialchars(strtoupper($foo ?: 'Hello')); ?>
的{{1}}眼睛有点难以理解我看到使用Smarty的主要优点(如果使用{$foo|default:'Hello'|upper|escape:html}
,所有这些优点基本上无效):
如果混合使用Smarty和PHP,那么你保留的唯一好处就是Smarty语法的那些部分比它们的PHP等价物更易读,就像我上面展示的修饰语例子一样。