找不到PHP类DateTime

找不到PHP类DateTime,php,eclipse,datetime,Php,Eclipse,Datetime,在PHP 5.3.8中声明DateTime对象时缺少某些内容 我得到一个带有确定日期时间的JSON字符串,它被传递给我的php控制器 出于某种原因,我没有将其映射为php中的DateTime对象。但有点奇怪。请参见以下图像: 正如您在Expressions窗口(右上角)中所看到的,在执行该步骤之前,我正在检查new DateTime(myVariable)是否正确地带来并转换了我需要的内容。在第一个表中,传递给DateTime构造函数的变量。在第二个表中,表达式newDateTime(myVar

在PHP 5.3.8中声明DateTime对象时缺少某些内容

我得到一个带有确定日期时间的JSON字符串,它被传递给我的php控制器

出于某种原因,我没有将其映射为php中的DateTime对象。但有点奇怪。请参见以下图像:

  • 正如您在Expressions窗口(右上角)中所看到的,在执行该步骤之前,我正在检查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中的Watch Expressions窗口并不像执行引擎那样工作,反之亦然

    当然,我更希望它是相反的(它在执行中工作,而不是在监视窗口中:)


    那么,有什么想法吗?

    您目前在
    Acme\StoreBundle\Repository\DateTime
    napespace中。在这种情况下,要寻址到默认名称空间,您需要在类名之前放置前导的
    \
    ,如

    $dt = new \DateTime(...);
    
    所以

    将尝试在
    foo
    命名空间中查找
    class
    定义

    将尝试在全局命名空间中查找
    定义

    作为替代方案,您可以使用

    use \DateTime;
    
    或创建别名(如果当前NS中已有同名的类):


    我猜您正在使用名称空间,并试图使用DateTime(相对于当前名称空间)而不是\DateTime(完整的合格类名)

    您还可以使用
    使用DateTime在顶部,然后你就可以不用斜杠来使用它了。当使用PSR-4时,这是一个很好的解决方案。谢谢
    
    namespace foo;
    $obj = new \class();
    
    use \DateTime;
    
    use \DateTime as NewDT;