2013-04-24 2 views
2

У меня есть необычная проблема с моей машиной разработки.пространство имен PhP в идентичных конфигурациях

Она такая же, мы используем на сервере, но по какой-то причине, когда я бегу на моем Vm Somthing как

namespace NotWorking; 

$foo = new DateTime(); 

Он работает на моей локальной машине, но не witout какие-либо ошибки на нашем сервере продукции.

но когда я использую Somthing как:

namespace Working; 

$foo = new \DateTime(); 

он работает. мы сравнили уже все настройки, известные мне, но не обнаружили различий в построении от php, и даже apatche - это одна и та же сборка.

Есть ли возможность применить эту «функцию»?

ответ

2

DateTime в глобальном пространстве имен, а также «имена классов всегда преобразовываться в текущее имя пространства имен» вы должны использовать \ DATETIME

Вы можете прочитать больше об этом here

Если вы когда-либо иметь класс в локальном пространстве имен с тем же именем, что и в глобальном пространстве имен, у вас должен быть префикс \, или вы просто импортируете локальный класс.

+0

У меня нет класса, который называется так. И это работает отлично на одной машине, но не на другой. Ты за хорошую контрольную точку. – Sangoku

+0

@Sangoku Вы всегда должны использовать обратную косую черту со всеми родными PHP-классами независимо от того, на какой машине вы находитесь. Случай, который хорошо работает на вашей локальной машине, выглядит странно - но, вероятно, из-за того, что текущее пространство имен совпадает с глобальным пространством имен ... – shadyyx

+0

@shadyyx Хорошо сказал, что Sangoku убедится, что вы используете '\', это странно, почему это работает на вашей машине :) –

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