Как использовать автозагрузку вместе с пространством имен в php?
Я хочу использовать функцию __autoload. Например, у меня есть два файла в одной папке:
index.php, MyClass.php
MyClass.php выглядит примерно так:
// filename: MyClass.php
namespace SomeNameSpace;
class MyClass{
public static function helloWorld(){ echo 'Hello'; }
}
Итак, я хочу использовать __autoload для загрузки этого класса. Но когда я делаю это:
function __autoload($className){
include($className.'.php');
}
автозагрузка не работает, потому что класс находится в пространстве имен.
Любая помощь?
пример для index.php:
//index.php
//the autoload method above
SomeNameSpace\MyClass::helloWorld();
1 ответ
Решение
Когда ты делаешь
include('$className'.'.php');
вы на самом деле ищете файл с именем "$classname.php". удалить одинарные кавычки.
Пытаться:
function __autoload($className){
include( end(explode('\\', $className)) . '.php');
}