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