Articles of имен имен

Как автозагрузить класс с другим именем файла? PHP

Я хотел бы автозагрузить класс, но он объявлен внутри другого имени файла таким образом: AClass.php namespace path\to\A; class AClass {} class AException extends \Exception {} BClass.php namespace path\to\B; use path\to\A\AClass; // I'm actually after AException inside class BClass {} class BException extends AException {} Я не заинтересован в загрузке AClass, но AException. Однако приведенный выше […]

Автозагрузка с пространствами имен в PHP 5.3?

Как вы используете _autoload в PHP 5.3 с пространствами имен? У меня есть основная функция автозагрузки в пространстве имен, отдельно от моего скрипта. Я также называю класс с другим пространством имен. (Это не удивительно, но) Это не поиск функции автозагрузки. Должен ли я воссоздать функцию автозагрузки для каждого пространства имен? Это кажется субоптимальным. Заранее благодарю […]

Пространство имен Autoload работает под окнами, но не в Linux

У меня есть следующий код php: index.php <?php spl_autoload_extensions(".php"); spl_autoload_register(); use modules\standard as std; $handler = new std\handler(); $handler->delegate(); ?> модули \ стандартной \ handler.php <?php namespace modules\standard { class handler { function delegate(){ echo 'Hello from delegation!'; } } } ?> В Windows 7, запущенной WAMP, код выдает сообщение «Привет от делегирования!». однако под […]

Импорт классов и пространств имен в PHP: Какая разница делает лидирующую обратную косую черту?

В чем разница между этими двумя: use Exception; use \Exception; Или те: use Foo\Bar; use \Foo\Bar; В руководстве написано: Обратите внимание, что для имен с именами (полнофункциональные имена пространства имен, содержащие разделитель пространства имен, например Foo \ Bar, в отличие от глобальных имен, которые этого не делают, например FooBar), ведущая обратная косая черта не нужна […]

Стратегия для разработки версий с именами и без имен с одним и тем же PHP-кодом

Я поддерживаю библиотеку, написанную для PHP 5.2, и я хотел бы создать версию PHP 5.3-namespaced. Тем не менее, я бы также сохранил версию, отличную от имен, до тех пор, пока PHP 5.3 не станет настолько старым, что даже стабильный сервер Debian отправит его;) У меня довольно чистый код, около 80 классов, следуя схеме именования Project_Directory_Filename […]

Создание экземпляров класса по строкам с использованием пространств имен PHP 5.3

Я не могу обойти проблему, создающую новый класс, используя строковую переменную и PHP 5.3. Пространства имен. Например, это работает; $class = 'Reflection'; $object = new $class(); Однако это не так; $class = '\Application\Log\MyClass'; $object = new $class(); Произошла фатальная ошибка, указывающая, что класс не может быть найден. Однако он, очевидно, может быть создан при использовании […]