php - 如何自动加载 PHP 5.3 类?

标签 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我怎样才能解决这个问题?

最佳答案

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

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

关于php - 如何自动加载 PHP 5.3 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6326421/

相关文章:

php - 如何在 php 中的 google analytic api v4 中使用不完全精确的运算符创建动态段?

php - 在帖子编辑页面上显示自定义元框值的问题

r - 命名空间 'rlang' 0.4.5 正在加载,但 >= 0.4.10 是必需的

c# - Razor 是否查看解决方案文件夹?

php - Laravel 中的 psr-4 自动加载问题

php - __autoload 灾难 - 与 Joomla 冲突

javascript - 为什么循环使用推移移位在 desc 数据获取中的最后一个索引处添加第一个值

php - 使用 PHP 'while' 循环更改 div 的不透明度

xslt - 转换为 SVG 文件时的 XSL 命名空间问题

php - 我如何不在 php 中自动加载类?