В Symfony 2, что делает эта линия виду:В Symfony2, что означает DateTime?
$task->setDueDate(new \DateTime('tomorrow'));
что это \DateTime
означает? Можно ли получить доступ из любого места?
В Symfony 2, что делает эта линия виду:В Symfony2, что означает DateTime?
$task->setDueDate(new \DateTime('tomorrow'));
что это \DateTime
означает? Можно ли получить доступ из любого места?
Небольшой FYI во-первых, это не имеет ничего общего с Symfony - просто случается, что Symfony2 использует namespaces.
Если не использовать пространства имен, то datetime class всегда доступен через 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;
\ DateTime - это класс DateTime с именами. Вероятно, где-то в верхней части файла, который вы просматриваете, используется торможение \ X \ X. \ DateTime должны быть доступны в любом месте вы можете объявить использование \ Х \
См http://www.php.net/manual/en/language.namespaces.global.php
Вы также должны увидеть namespace X\Y;
в верхней части файла, \DateTime
означает, что класс DateTime
должен быть взят из глобального пространство имен, а не X\Y
.
i.e this DateTime.
Как другой сказал, что ссылки на глобальное пространство имен , и DateTime интегрирован в php, смотрите здесь: http://www.php.net/manual/en/class.datetime.php , так что вы можете использовать его не только в symfony;)
Удивительный! спасибо .. –
Вы также можете добавить 'use DateTime' в свой класс, а затем просто 'new DateTime()', вот как вы импортируете классы с именами в другие, готовые к использованию. – catchamonkey
@catchamonkey true. Я добавлю это к ответу. – Prisoner