在 PHP 5.3.8
中声明DateTime对象时遗漏了某些内容我得到一个带有确定日期时间的JSON字符串,该字符串传递给我的php控制器。
出于某种原因,我没有将它映射为php中的DateTime对象。但有点奇怪。请参阅以下图像:
正如您在表达式窗口(右上角)中看到的那样,在步骤之前,我正在检查新的DateTime(myVariable)是否正确地带来并正确转换我需要的内容。在第一个watch中,传递给DateTime构造函数的变量。在第二个监视中,表达式newDateTime(myVariable)已映射为DateTimeObject。显然很好到这里。
但遗憾的是,当我前进并按下F6时,会抛出以下豁免(另请参见下图):
Fatal error: Class 'Acme\StoreBundle\Repository\DateTime' not found in /Users/pgbonino/Sites/Symfony/src/Acme/StoreBundle/Repository/HistoryRepository.php on line 19
Call Stack:
0.0201 693568 1. {main}() /Users/pgbonino/Sites/Symfony/web/app_dev.php:0
0.0267 2106576 2. Symfony\Component\HttpKernel\Kernel->handle(???, ???, ???) /Users/pgbonino/Sites/Symfony/web/app_dev.php:24
0.0377 2649176 3. Symfony\Bundle\FrameworkBundle\HttpKernel->handle(???, ???, ???) /Users/pgbonino/Sites/Symfony/app/bootstrap.php.cache:547
0.0378 2650832 4. Symfony\Component\HttpKernel\HttpKernel->handle(???, ???, ???) /Users/pgbonino/Sites/Symfony/app/cache/dev/classes.php:4879
0.0378 2650832 5. Symfony\Component\HttpKernel\HttpKernel->handleRaw(???, ???) /Users/pgbonino/Sites/Symfony/app/cache/dev/classes.php:3875
0.1574 5562232 6. call_user_func_array(???, ???) /Users/pgbonino/Sites/Symfony/app/cache/dev/classes.php:3905
0.1574 5562600 7. Acme\StoreBundle\Controller\HistoryController->saveTestAction() /Users/pgbonino/Sites/Symfony/app/cache/dev/classes.php:3905
0.1694 5739032 8. Acme\StoreBundle\Repository\HistoryRepository->saveTestInHistory(???, ???) /Users/pgbonino/Sites/Symfony/src/Acme/StoreBundle/Controller/HistoryController.php:33
奇怪的是,Eclipse的Watch Expressions窗口不像执行引擎那样工作,反之亦然。
当然,我更喜欢它是相反的(它在执行中起作用,而不是在观察窗口中:) :)。
那么,任何想法?
答案 0 :(得分:47)
您目前位于Acme\StoreBundle\Repository\DateTime
napespace。要在这种情况下解决默认命名空间,您需要在类名前添加前导\
,例如
$dt = new \DateTime(...);
所以
namespace foo;
$obj = new class();
将尝试在class
命名空间中找到foo
定义。
和
namespace foo;
$obj = new \class();
将尝试在全局命名空间中查找class
定义。
作为替代方案,您可以使用
导入该类use \DateTime;
或创建别名(如果您已经在当前NS中具有相同名称的类):
use \DateTime as NewDT;
答案 1 :(得分:2)
我猜你正在使用命名空间并尝试使用DateTime(相对于当前命名空间)而不是\ DateTime(完整的qulified类名)