sym2 IF 语句给出错误 "call to undefined function"
sym2 IF-statement gives error "call to undefined function"
我的 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
对象上也是有效的。
如果我 var_dump 在第二个 if 条件之前打印的变量:
开始:
object(DateTime)#1149 (3) { ["date"]=> string(19) "2014-12-20 16:39:06" ["timezone_type"]=> int(3) ["timezone"]=> 字符串(13) "Europe/Berlin" }
结束:
object(DateTime)#1150 (3) { ["date"]=> string(19) "2015-01-19 16:39:06" ["timezone_type"]=> int(3) ["timezone"]=> 字符串(13) "Europe/Berlin" }
t->getDate():
object(DateTime)#1046 (3) { ["date"]=> string(19) "2012-12-11 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> 字符串(13) "Europe/Berlin" }
所以我不知道这是否是 symfony2 特有的东西,但是如果我将 IF 条件分成两个不同的部分,从而取消 OR 操作数 ||它实际上工作正常。
令人费解的部分是第一个 IF 语句(具有几乎相同的条件)没有问题。
if ( $start == null ) {
$subset[] = $t;
}
elseif ( $t->getDate()->format('Y-m-d') >= $start->format("Y-m-d") ) {
$subset[] = $t;
}
错误本身看起来很可疑,名称space 和括号之间有白色space:
Call to undefined function App\Bundle\Controller\ ()
通常您会希望看到如下内容:
Call to undefined function App\Bundle\Controller\foo_function()
不管发生什么事,PHP 看到一个 "function" 和 "blank" 的名字。我以前遇到过这样奇怪的情况,当我打字非常快并且在插入文本时碰巧按下控制字符。它通常发生在 space 字符附近,因为在我的键盘上,控制字符位于 space 栏旁边。
复制它几乎是不可能的。最好的办法就是删除该行,然后慢慢地重新输入。
如果你执意要诊断它,那么在 GNU/Linux 你可以 "take the cat to the vet":
$ cat file.php
<?php if (1 == 1) echo 'hi';
$ cat -vet file.php
<?php if (1 == ^@1) echo 'hi';
我用我的编辑器在 if 语句中插入了一个空字节,它在正常检查中不会出现,但在提供给 "the vet" 时会显示。
我的 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
对象上也是有效的。
如果我 var_dump 在第二个 if 条件之前打印的变量:
开始: object(DateTime)#1149 (3) { ["date"]=> string(19) "2014-12-20 16:39:06" ["timezone_type"]=> int(3) ["timezone"]=> 字符串(13) "Europe/Berlin" }
结束: object(DateTime)#1150 (3) { ["date"]=> string(19) "2015-01-19 16:39:06" ["timezone_type"]=> int(3) ["timezone"]=> 字符串(13) "Europe/Berlin" }
t->getDate(): object(DateTime)#1046 (3) { ["date"]=> string(19) "2012-12-11 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> 字符串(13) "Europe/Berlin" }
所以我不知道这是否是 symfony2 特有的东西,但是如果我将 IF 条件分成两个不同的部分,从而取消 OR 操作数 ||它实际上工作正常。
令人费解的部分是第一个 IF 语句(具有几乎相同的条件)没有问题。
if ( $start == null ) {
$subset[] = $t;
}
elseif ( $t->getDate()->format('Y-m-d') >= $start->format("Y-m-d") ) {
$subset[] = $t;
}
错误本身看起来很可疑,名称space 和括号之间有白色space:
Call to undefined function App\Bundle\Controller\ ()
通常您会希望看到如下内容:
Call to undefined function App\Bundle\Controller\foo_function()
不管发生什么事,PHP 看到一个 "function" 和 "blank" 的名字。我以前遇到过这样奇怪的情况,当我打字非常快并且在插入文本时碰巧按下控制字符。它通常发生在 space 字符附近,因为在我的键盘上,控制字符位于 space 栏旁边。
复制它几乎是不可能的。最好的办法就是删除该行,然后慢慢地重新输入。
如果你执意要诊断它,那么在 GNU/Linux 你可以 "take the cat to the vet":
$ cat file.php
<?php if (1 == 1) echo 'hi';
$ cat -vet file.php
<?php if (1 == ^@1) echo 'hi';
我用我的编辑器在 if 语句中插入了一个空字节,它在正常检查中不会出现,但在提供给 "the vet" 时会显示。