Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP模板条件_Php_Templates_Conditional Statements - Fatal编程技术网

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