2013-03-13 4 views

ответ

34

Небольшой 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; 
+0

Удивительный! спасибо .. –

+0

Вы также можете добавить 'use DateTime' в свой класс, а затем просто 'new DateTime()', вот как вы импортируете классы с именами в другие, готовые к использованию. – catchamonkey

+0

@catchamonkey true. Я добавлю это к ответу. – Prisoner

1

\ DateTime - это класс DateTime с именами. Вероятно, где-то в верхней части файла, который вы просматриваете, используется торможение \ X \ X. \ DateTime должны быть доступны в любом месте вы можете объявить использование \ Х \

3

См http://www.php.net/manual/en/language.namespaces.global.php

Вы также должны увидеть namespace X\Y; в верхней части файла, \DateTime означает, что класс DateTime должен быть взят из глобального пространство имен, а не X\Y.

i.e this DateTime.

+0

\ DateTime означает, что он не находится в текущем пространстве имен. Он находится в «корневом» пространстве имен. – Prisoner

+0

спасибо, @Prisoner, теперь мой совет должен быть правильным – Ivo

2

Как другой сказал, что ссылки на глобальное пространство имен , и DateTime интегрирован в php, смотрите здесь: http://www.php.net/manual/en/class.datetime.php , так что вы можете использовать его не только в symfony;) ​​

Смежные вопросы