0

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

尝试将原生 PHP __autoload 函数与 Mollie_API_Autoloader 类一起使用:

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();

Mollie 自动加载器类会影响原生 PHP __autoload 类的正常运行。似乎无法将这些结合起来。我是怎么做到的?

4

1 回答 1

0

__autoload()spl_autoloader_register()已弃用,它已在多年前被取代(在 PHP 5.1.2 上)。

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

由于您发布的课程已经使用spl_autoload_register(),您所要做的就是打电话

Mollie_API_Autoloader::register()

在你的 boostrap 代码中的某个地方。

If your existing code uses __autoload() you can easily change it to use spl_autoload_register(). Just rename the __autoload function to something else (let's say old_autoloader) and add spl_autoload_register('old_autoloader'); after its definition.

Check Example #1 on the documentation of spl_autoload_register() for an example.

于 2017-11-16T09:18:25.793 回答