Свифт Мейлер руины автозагрузки

Я пишу простое приложение PHP, которое использует Библиотека Swift Mailer. Мое приложение не использует ни пространства имен, ни композитора.

Однако после того, как требуется swift_required.php мои (модельные) классы не найдены (Неустранимая ошибка: класс «Формат» не найден бросается PHP интерпретировать).

Autolading

define("_DOCUMENT_ROOT", str_replace("//", "/", $_SERVER['DOCUMENT_ROOT'] . "/"));
function __autoload($class_name) {
$file_name = $class_name . '.php';
$include_foleder = array("php/model/", "templates/","cron/crons_tasks/");
foreach ($include_foleder as $folder) {
$abs_path = _DOCUMENT_ROOT . $folder . $file_name;
if (file_exists($abs_path)) {
require_once $abs_path;
}
}
}

Проблемная часть функции

  $bar = Format::bar($foo); //works fine
require_once _DOCUMENT_ROOT . "php/lib/swiftmailer-master/lib/swift_required.php"; //works fine
$bar = Format::bar($foo); //Class not found

Учебный класс Format мой пользовательский класс, расположенный в _DOCUMENT_ROOT . php/model/Format.php, Также не найдены другие пользовательские классы (из папки модели) после запроса Swift Mailer.

Так что я предполагаю, что моя прежняя автозагрузка каким-то образом переопределена Swift Mailer, возможно ли это?

Спасибо.

1

Решение

Вместо __autoload () вы должны использовать spl_autoload_register.

Если должно быть несколько функций автозагрузки, spl_autoload_register ()
позволяет это. Эффективно создает очередь функций автозагрузки,
и проходит через каждого из них в порядке, в котором они определены. От
напротив, __autoload () может быть определен только один раз.

http://php.net/manual/en/function.spl-autoload-register.php

define("_DOCUMENT_ROOT", str_replace("//", "/", $_SERVER['DOCUMENT_ROOT'] . "/"));

spl_autoload_register(function($class_name) {
$file_name = $class_name . '.php';
$include_folder = array("php/model/", "templates/","cron/crons_tasks/");
foreach ($include_folder as $folder) {
$abs_path = _DOCUMENT_ROOT . $folder . $file_name;
if (file_exists($abs_path)) {
require_once $abs_path;
}
}
});
1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector