如何在php中使用自动加载与命名空间?

时间:2013-01-19 20:12:21

标签: php namespaces autoload autoloader

我想使用__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');
}

autoload不起作用,因为该类位于命名空间中。

任何帮助?

index.php的例子:

//index.php
//the autoload method above
SomeNameSpace\MyClass::helloWorld();

1 个答案:

答案 0 :(得分:2)

当你做的时候

include('$className'.'.php');

您实际上正在寻找名为“$ classname.php”的文件。删除单引号。

尝试:

function __autoload($className){
    include( end(explode('\\', $className)) . '.php');
}