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 работает не так, как механизм выполнения и/или наоборот.
Конечно, я бы предпочел, чтобы это было наоборот (он работал в исполнении, а не в окне просмотра:)).
Итак, любая идея?
Ответы
Ответ 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)