声明 DateTime 对象时缺少某些内容PHP 5.3.8
我得到一个带有确定日期时间的 JSON 字符串,该字符串被传递到我的 php 控制器。
由于某种原因,我没有将其映射为 php 中的 DateTime 对象。但有点奇怪。请参阅以下图片:
-
正如您在“表达式窗口”(右上角)中看到的,在执行该步骤之前,我正在检查 new DateTime(myVariable) 是否正确引入并转换了我需要的内容。在第一个监视中,传递给 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 中的“观察表达式”窗口不像执行引擎那样工作,反之亦然。
当然,我希望它是相反的(它在执行中起作用,而不是在监视窗口中起作用:))。
那么,有什么想法吗?
您目前处于Acme\StoreBundle\Repository\DateTime
颈背空间。在这种情况下,要寻址默认名称空间,您需要将前导\
在你的类名之前,比如
$dt = new \DateTime(...);
so
namespace foo;
$obj = new class();
会尝试寻找class
内的定义foo
命名空间。
And
namespace foo;
$obj = new \class();
会尝试寻找class
全局命名空间中的定义。
作为替代方案,您可以使用导入该类
use \DateTime;
或创建别名(如果您在当前 NS 中已经有同名的类):
use \DateTime as NewDT;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)