в основном, у меня есть следующая проблема: я хочу использовать новые возможности пространства имен 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).