Я использую
function __autoload($class_name) {
$file_name = str_replace("\\", DIRECTORY_SEPARATOR, $class_name) . '.php';
include $file_name;
}
загрузить мои занятия. И все идеально, но теперь я хочу использовать внешнюю библиотеку, которая имеет другое соглашение об именах Services_Twilio (и я сохранил библиотеку в /code/twilio/Services/Twilio.php)
Теперь PHP говорит Предупреждение: include (Services_Twilio.php): не удалось открыть поток:
Как я могу разобраться с этими делами? Должен ли я исключить этот класс? Я также обнаружил, что в библиотеке есть собственный автозагрузчик.
Вы должны использовать предоставленный автозагрузчик для пакета, включив его.
Ваш собственный автозагрузчик должен дать своему автозагрузчику возможность действовать. Вы должны сделать это:
function __autoload($class_name) {
$file_name = str_replace("\\", DIRECTORY_SEPARATOR, $class_name) . '.php';
if (file_exists($file_name)) {
include $file_name;
}
}
Если ваш автозагрузчик не может найти файл, он ничего не делает. Поэтому предупреждение, которое вы получили, исчезнет. Кроме того, может включиться автозагрузчик пакета.
Вы также можете рассмотреть http://php.net/manual/de/function.spl-autoload-register.php
Других решений пока нет …