Я работаю над документацией AWS, которая использует структуру Guzzle. Мне нужно иметь дело с пространствами имен, и я не могу заставить его работать. Я просмотрел документы и примеры и понял, что у нас могут быть пакеты для проектов с использованием пространств имен.Использование пространств имен в PHP
Я пошел вперед и попробовал простой пример, но безуспешно. Вот пример: это index.php
:
use My\Full\Classname as Another; //Also tried use My\Full\Classname
$obj = new Another; //with $obj = new Classname;
echo $obj->add();
У меня есть Classname.php
в структуре каталогов, как этот My->Full->Classname.php
:
<?php
class Classname{
public static function add(){
return 2+2;
}
}
?>
Я пытаюсь вызвать функцию в index.php
, но получаю ошибку:
Fatal error: Class 'Another' not found in C:\wamp\www\guzzleEx\index.php on line 19
, который является строкой, в которой я создаю объект класса. $obj = new Another;
Какая ошибка я делаю? Есть ли INI
, который необходимо обновить или любой другой вопрос конфигурации? Как я могу заставить код работать? Если вы используете обычный include
для Classname.php, он отлично работает.
Вам все равно необходимо включить (или загрузить) файл класса. Все 'use' делает это псевдоним имени класса с именами для имени голого класса. – halfer
показать зарегистрированный автозагрузчик и включить 'namespace My \ Full;' в качестве первой строки в файле определения 'Classname' –
Что такое зарегистрированный автозагрузчик? я просто следовал примеру над [здесь] (http://uk3.php.net/manual/en/language.namespaces.importing.php) – KillABug