Подтвердить что ты не робот

PHP Class DateTime не найден

Отсутствует что-то при объявлении объекта DateTime в PHP 5.3.8

Я получаю строку JSON с определенным временем даты, которое передается моему php-контроллеру.

По какой-то причине я не собираюсь отображать его как объект DateTime в php. Но странно. См. Следующие изображения:

  • Как вы можете видеть в окне "Выражения" (вверху справа), ПЕРЕД шагом, я проверяю, что новая функция DateTime (myVariable) правильно и правильно преобразует то, что мне нужно. В первых часах переменная переходит к конструктору DateTime. Во вторых часах выражение newDateTime (myVariable) уже отображается как DateTimeObject. Видимо, хорошо здесь.

    enter image description here

  • Но, к сожалению, когда я перехожу вперед и нажимаю 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
    

    enter image description here

Итак, как ни странно, окно Watch Expressions от Eclipse работает не так, как механизм выполнения и/или наоборот.

Конечно, я бы предпочел, чтобы это было наоборот (он работал в исполнении, а не в окне просмотра:)).

Итак, любая идея?

4b9b3361

Ответ 1

В настоящее время вы находитесь в 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;

Ответ 2

Я предполагаю, что вы используете пространства имен и пытаетесь использовать DateTime (относительно текущего пространства имен) вместо \DateTime (полное имя класса qulified)