虽然我知道要求现成的代码是不合适的,但在这种情况下,我是这样做的,因为我找不到解决方案。
尝试与__autoload类一起使用本机PHP 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();类会影响本地PHP __autoload类的正常功能。似乎不能把它们结合起来。我是怎么做到的?
发布于 2017-11-16 09:18:25
__autoload()被废弃了,它在许多年前被spl_autoloader_register()所取代(在PHP5.1.2上)。
他们不能一起工作。__autoload()是有限的,它所做的一切,spl_autoloader_register()做得更好。
由于您发布的类已经使用了spl_autoload_register(),所以您所要做的就是调用
Mollie_API_Autoloader::register()在你的启动码里。
如果您的现有代码使用__autoload(),则可以轻松地将其更改为使用spl_autoload_register()。只需将__autoload函数重命名为其他函数(例如old_autoloader),并在其定义后添加spl_autoload_register('old_autoloader');。
查看示例1上的spl_autoload_register()文档以获得一个示例。
https://stackoverflow.com/questions/47325568
复制相似问题