2013-09-27 5 views
0

Все в названии. Когда я создаю свой объект с new Object, у меня есть ошибка, говорящая, что мой класс не найден. Но когда я делаю new \Object, все работает как шарм. Надеюсь, кто-то может мне помочь. Заранее спасибо.PHP - Разница между новым объектом и новым Объектом?

+7

RTM: http://php.net/manual/en/language.namespaces.php –

+0

ти Амаль для ссылки. Я копаю прямо сейчас и вернусь ... – Marc

ответ

1

Для удобства PHP теперь имеет поддержку пространства имен, чтобы «упаковать» или «сортировать» ваши объекты в разные «категории», что в основном позволяет упростить автозагрузку и относительную зависимость.

\ - это корневое пространство имен, которое просто помещает средства, использует Object в «no namespace». Это происходит только очень удобно, когда объект в суб-пространстве имен требует объект, не связанный с текущим пространством имен, например:

\HTTP\Request\Properties() хочет расширить SPL объект ArrayObject, если бы вы попытаетесь extend ArrayObject этого потерпит неудачу, потому что текущего пространства имен \HTTP\Request, а ArrayObject находится в корневом пространстве имен. Чтобы вырваться из текущего пространства имен, вы должны указать \ (root/break out) пространство имен.

Пространства имен очень полезны, если вы хотите использовать различные пакеты поставщиков, например библиотеки фреймов Zend или SwiftMailer, все, что вам нужно сделать, это опубликовать процедуру автоматической загрузки для всех пакетов поставщиков и продолжить работу и реализацию, как показано ниже :

/vendor/Zend/[zend packages] 

$algos = \Zend\Crypt\Hash::getSupportedAlgorithms(); 
+0

очень много Даниэля на время, чтобы помочь мне. Приветствия :) – Marc

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