首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP__autoload与Mollie_API_Autoloader类的结合

PHP__autoload与Mollie_API_Autoloader类的结合
EN

Stack Overflow用户
提问于 2017-11-16 09:09:42
回答 1查看 143关注 0票数 0

虽然我知道要求现成的代码是不合适的,但在这种情况下,我是这样做的,因为我找不到解决方案。

尝试与__autoload类一起使用本机PHP Mollie_API_Autoloader函数:

代码语言:javascript
复制
class Mollie_API_Autoloader
{
/**
 * @param string $class_name
 */
public static function autoload ($class_name)
{
    if (strpos($class_name, "Mollie_") === 0)
    {
        $file_name = str_replace("_", "/", $class_name);
        $file_name = realpath(dirname(__FILE__) . 
"/../../{$file_name}.php");

        if ($file_name !== false)
        {
            require $file_name;
        }
    }
}

/**
 * @return bool
 */
public static function register ()
{
    return spl_autoload_register(array(__CLASS__, "autoload"));
}

/**
 * @return bool
 */
public static function unregister ()
{
    return spl_autoload_unregister(array(__CLASS__, "autoload"));
}
}

Mollie_API_Autoloader::register();

类会影响本地PHP __autoload类的正常功能。似乎不能把它们结合起来。我是怎么做到的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-16 09:18:25

__autoload()被废弃了,它在许多年前被spl_autoloader_register()所取代(在PHP5.1.2上)。

他们不能一起工作。__autoload()是有限的,它所做的一切,spl_autoloader_register()做得更好。

由于您发布的类已经使用了spl_autoload_register(),所以您所要做的就是调用

代码语言:javascript
复制
Mollie_API_Autoloader::register()

在你的启动码里。

如果您的现有代码使用__autoload(),则可以轻松地将其更改为使用spl_autoload_register()。只需将__autoload函数重命名为其他函数(例如old_autoloader),并在其定义后添加spl_autoload_register('old_autoloader');

查看示例1上的spl_autoload_register()文档以获得一个示例。

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

https://stackoverflow.com/questions/47325568

复制
相关文章

相似问题

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