Как использовать автозагрузку вместе с пространством имен в 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');
}
Другие вопросы по тегам