PHP模板条件
如何从中获得一些变量:PHP模板条件,php,templates,conditional-statements,Php,Templates,Conditional Statements,如何从中获得一些变量: <if a == 5 && b < 4> one <else> <if a != 5> two <else> <if a == 5 || $b == 5> three </if> </if> </if> 或者您建议如何在模板中创建条件?我一般不反对
<if a == 5 && b < 4>
one
<else>
<if a != 5>
two
<else>
<if a == 5 || $b == 5>
three
</if>
</if>
</if>
或者您建议如何在模板中创建条件?我一般不反对模板系统,但为什么不使用普通PHP来实现这一点呢
[0] = "a == 5 && b < 4"
[1] = "one"
[2] = "a != 5"
[3] = "two"
[4] = "a == 5 || $b == 5"
[5] = "three"
我看不到痛苦地在PHP中重建解析和求值逻辑的好处
如果您真的需要,我会使用Smarty。一旦您开始引入流控制结构,如果,循环。。。对于模板语言,仅通过对变量应用搜索和替换,就失去了应用模板的能力。您需要开始解析模板以提取依赖于某个条件的部分,并在需要时分别重新插入它们 您最终可能要做的是应用一个初始解析步骤,该步骤将:
<?php if ($a == 5 && ($b < 4)): ?>
one
<?php elseif ($a != 5): ?>
....
然后,如果a为true,则在呈现template main时应用template temp并将其存储到变量{temp-if-a}。如果a为false,则不会为{temp-If-a}提供任何值
其他控制流结构也可以类似地使用此提取独立应用替换序列来实现,包括嵌套的控制流结构,它们只是让您的模板应用程序算法递归地工作 不是说Isis在说什么,而是用PHP来做,这意味着应用程序代码容易出现愚蠢的语法错误和/或通过调用全局PHP函数破坏MVC模式。当然,在这种情况下,为什么不使用Smarty或其他模板引擎?@Victor是的,但看看这需要多少逻辑。。。如果真的需要,我会使用Smarty Update:正如您已经说过的
Template "main" : FOO <if a> BAR </if> QUX
Template "main" : FOO {temp-if-a} QUX
Template "temp" : BAR