如何自动加载PHP 5.3类?

时间:2011-06-13 03:34:39

标签: php namespaces autoload

我正在尝试自动加载我的PHP 5.3命名空间类,例如。

/JM
    Auth.php
    User.php
    Db/Entity.php
    / ...

我做了

namespace KM;

class Autoloader {
    public static function registerAutolaod() {
        ini_set('include_path', dirname(__FILE__) . PATH_SEPARATOR . ini_get('include_path'));
        spl_autoload_register(function ($classname) {
            $file = preg_replace('/\\\/', DIRECTORY_SEPARATOR, $classname) . '.php';
            echo $file . '<br />';
            include ($file);

        });
    }
}

问题有时我会将类名称User有时KM\User如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您在回调函数中收到的$classname将被视为本地。那是因为您已在命名空间中定义了__autoloader。

要始终获取绝对/完全限定的命名空间和类名,请在全局范围内声明自动加载器。 http://www.php.net/manual/en/language.oop5.autoload.php#87985