sym2 IF语句给出错误"调用未定义的函数"

时间:2015-01-01 15:06:37

标签: php symfony datetime if-statement

显然,我的IF声明存在问题。

在symfony2控制器中,我有以下PHP:

57   foreach($all as $t) {
58       if ( ($end == null) || ($t->getDate()->format('Y-m-d') <= $end->format("Y-m-d")) ) {
59           if ( ($start == null) || ($t->getDate()->format('Y-m-d') >= $start->format("Y-m-d")) ) {
60              $subset[] = $t;
61          }
62      }
63   }

我收到此错误消息:

FatalErrorException: Error: Call to undefined function App\Bundle\Controller\ () in 
www/App/src/App/Bundle/Controller/TransactionController.php line 59

如果我像这样评论第二个IF语句,它运行没有错误。

foreach($all as $t) {
    if ( ($end == null) || ($t->getDate()->format('Y-m-d') <= $end->format("Y-m-d")) ) {
        /*
        if ( ($start == null) || ($t->getDate()->format('Y-m-d') >= $start->format("Y-m-d")) ) {    
            $subset[] = $t;
        }
        */
    }
}

所以在我的if语句中某处尝试运行sym2控制器?我迷路了...

$start$end都是有效的DateTime个对象,$date个对象上的每个$t都是。

如果我在他们打印的第二个if条件之前var_dump变量:

开始: object(DateTime)#1149(3){[“date”] =&gt; string(19)“2014-12-20 16:39:06”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}

端: object(DateTime)#1150(3){[“date”] =&gt; string(19)“2015-01-19 16:39:06”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}

叔&GT; GETDATE(): object(DateTime)#1046(3){[“date”] =&gt; string(19)“2012-12-11 00:00:00”[“timezone_type”] =&gt; int(3)[“timezone”] =&gt; string(13)“Europe / Berlin”}

2 个答案:

答案 0 :(得分:0)

所以我不知道这是否是symfony2特有的,但如果我将IF条件分成两个不同的部分,从而废除了OR操作数||它实际上工作正常。

令人费解的是,第一个IF语句没有问题(它有一个几乎同意的条件)。

                if ( $start == null ) {    
                    $subset[] = $t;
                }
                elseif ( $t->getDate()->format('Y-m-d') >= $start->format("Y-m-d") ) {
                    $subset[] = $t;
                }

答案 1 :(得分:0)

错误本身看起来很可疑,命名空间和括号之间有空格:

Call to undefined function App\Bundle\Controller\ ()

通常你会看到类似的东西:

Call to undefined function App\Bundle\Controller\foo_function()

无论发生什么事情,PHP都会看到&#34;功能&#34;用&#34;空白&#34;名称。我之前遇到过类似奇怪的情况,当我输入非常快并碰巧在插入文本时按下控制字符时。它通常发生在空格字符周围,因为在我的键盘上,控制字符位于空格键旁边。

重复它几乎是不可能的。最好的办法就是删除该行,然后再慢慢重新输入。

如果您一心想要诊断它,那么在GNU / Linux上,您可以将猫带到兽医那里,并且#34;

$ cat file.php
<?php if (1 == 1) echo 'hi';

$ cat -vet file.php
<?php if (1 == ^@1) echo 'hi';

我使用我的编辑器在if语句中插入一个空字节,它在正常检查中不会显示,但在给予&#34;兽医&#34;时显示。