首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php spl_autoload_register redaclare

php spl_autoload_register redaclare
EN

Stack Overflow用户
提问于 2017-04-10 20:13:32
回答 1查看 47关注 0票数 0

我有一个关于php中spl_autoload_register的问题。这就是说..

代码语言:javascript
复制
// Use default autoload implementation
spl_autoload_register(function($class){

    //==========================================
    //use foo => src\store\services\httprequest
    //==========================================
    if($class=="foo"){
        $class='src\store\services\httprequest';
    }

    $class=root.'/'.$class.'.php';

    $class=str_replace("\\","/",$class);

    require($class);

});

当我在类中使用'use foo‘时,我希望spl_autoload_register像src\store\services\httprequest...but一样使用它返回的redaclare。

我能解决这个问题吗?

感谢您的回复..

EN

回答 1

Stack Overflow用户

发布于 2017-04-10 20:21:01

class_exists() -检查是否定义了类

更改您的自动加载器,首先检查类是否已加载,如果已加载,则忽略它。问题是,当您多次加载类文件时,它将尝试重新声明类。

require $class语句应该修复它之前执行类似的操作。还要注意false作为第二个参数的用法,以防止它自动加载。

代码语言:javascript
复制
if (class_exists($class, false)) {
    return;
}

我还建议使用require_once。这将防止您手动加载相同的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43322863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档