将PHP_autoload与Mollie_API_Autoloader类相结合



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

尝试将本机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 autoloader类会影响本机PHP __autoload类的正常运行。似乎无法将这些结合起来。我是怎么做到的?

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

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

由于你发布的课程已经使用了spl_autoload_register(),你所要做的就是调用

Mollie_API_Autoloader::register()

在你的助推代码中的某个地方。

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

查看spl_autoload_register()文档中的示例#1以获取示例。

最新更新