В Symfony 2, что означает эта линия:
$task->setDueDate(new \DateTime('tomorrow'));
что означает \DateTime
? Можно ли получить доступ из любого места?
Небольшой FYI, во-первых, это не имеет ничего общего с Symfony – просто случается, что Symfony2 использует пространства имен .
Если не использовать пространства имен, класс datetime всегда доступен через new DateTime()
– это потому, что вы уже находитесь в «корневом» пространстве имен. Однако, когда вы используете пространства имен, просто использование new DateTime()
работает, поскольку оно будет искать этот класс в текущем пространстве имен. Пример:
<?php namespace MyApp\Component; class Something { function __construct() { $dt = new DateTime(); } }
Это вызовет ошибку (например, Class 'MyApp\Component\DateTime' not found in ...
), потому что в пространстве имен MyApp\Component
именем DateTime нет класса.
Вот почему вы нашли \DateTime()
, указав интерпретатору на поиск в пространстве имен «root» (?) Для класса DateTime
.
Вы также можете использовать ключевое слово use
чтобы импортировать класс DateTime
– верхняя часть вашего скрипта будет выглядеть так: это позволяет вам просто вызвать new DateTime()
:
<?php namespace MyApp\Component; use \DateTime;
См. http://www.php.net/manual/en/language.namespaces.global.php
Вы также должны увидеть namespace X\Y;
в верхней части файла \DateTime
означает, что класс DateTime
должен быть взят из глобального пространства имен, а не X\Y
т.е. это DateTime .
Как и другие, он ссылается на глобальное пространство имен, а DateTime интегрируется в php, смотрите здесь: http://www.php.net/manual/en/class.datetime.php, чтобы вы могли использовать его не только в symfony;)
\ DateTime – это класс DateTime с именами. Вероятно, где-то в верхней части файла, который вы просматриваете, используется торможение \ X \ X. \ DateTime должен быть доступен везде, где вы можете объявить использование \ X \ X