繁体   English   中英

如何自动加载 PHP 5.3 类?

[英]How to autoload PHP 5.3 classes?

我正在尝试自动加载我的 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我该如何解决这个问题?

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

要始终获得绝对/完全限定的命名空间和 class 名称,请在全局 scope 中声明您的自动加载器。 http://www.php.net/manual/en/language.oop5.autoload.php#87985

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM