Intereting Posts
Обновление MongoDB: как проверить, удалось или не удалось выполнить обновление? Загрузка файла Ajax с данными формы Laravel 5.3 Как получить доступ к элементу массива в многомерном массиве? не удалось получить переменную $ _SESSION Каков наилучший способ / практика получения расширения загруженного файла в PHP Symfony2 – Как использовать __construct () в контроллере и получить доступ к Securty.Context? Как реализовать сервисный уровень в Zend Framework? Использование пространств имен в Laravel 4 Как шифровать AES 256 CBC в iOS Swift 3 как метод larvel encrypt () PHP завиток, возвращающий странные символы Установка таймаута Curl в PHP php single curl работает, но многократный завиток не работает? Drupal Условный PHP, если администратор или пользователь имеют определенную роль узнать, сколько воскресенья из двух заданных дат? ajax вызывает с php-страницы – проверка на пустой массив как результат

Загрузите класс с другим именем, чем тот, который был передан автозагрузчику в качестве аргумента

в основном, у меня есть следующая проблема: я хочу использовать новые возможности пространства имен PHP. К сожалению, я запускаю PHP-версию (5.3.2), в которой поддержка пространства имен для autoload для linux по-прежнему кажется ошибочной и не работает (PHP должен иметь возможность автоматически загружать файл класса по своему пространству имен без необходимости использования пользовательского автозагрузчик, но это не работает).

То, что я хочу достичь, – написать автозагрузчик, который я могу просто удалить, как только функции пространства имен php работают корректно (кажется, есть преимущество в скорости, когда вы не используете пользовательский автозагрузчик) с необходимостью изменить как можно меньше кода после этого.

Поэтому у меня есть такой вызов:

$filereader = new system\libraries\file\XML(); 

который передается правильно, как строка «system \ libraries \ file \ XML» для моей функции автозагрузки. Я могу загрузить соответствующий файл «system / libraries / file / XML.class.php». Тем не менее, класс там будет назван

 class XML { ... } 

(или что-то другое, чем «system \ libraries \ file \ XML»), и поэтому имеют другое имя, чем тот, с помощью которого PHP попытается загрузить его. Итак, есть ли простой способ загрузить этот класс («XML»), который имеет другое имя, чем имя, которое я передаю функции автозагрузчика? Могу ли я, возможно, сделать что-то в автозагрузчике для достижения такого поведения? (Я использую spl_autoload_register).

Я знаю, что даже если бы это сработало, я все равно не смогу использовать все возможности пространства имен, поскольку (простой) автозагрузчик не будет относиться к директиве «use namespace», и мне все равно придется использовать довольно длинные имена для загрузки класса , Однако, если я правильно понял возможности PHP-пространства имен, я мог оставить код так, как если бы я позже переключился на использование поддержки собственного пространства имен вместо моего автозагрузчика.

Если я попытаюсь сделать это, не имеет смысла вообще, по вашему мнению, или если я неправильно понял пространства имен, скажите мне (я еще не использовал возможности пространства имен PHP).