Объединение 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 влияет на правильное функционирование нативного класса PHP __autoload. Не могу объединить это. Как я это сделал?

0

Решение

__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() для примера.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]