Хотя я знаю, что неуместно запрашивать готовый к использованию код, я делаю это в этом случае, так как не могу найти решение.
Попытка использовать встроенную функцию 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. Не могу объединить это. Как я это сделал?
__autoload()
устарела, была заменена spl_autoloader_register()
много лет назад (на PHP 5.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()
для примера.
Других решений пока нет …