как включить все классы с помощью preg_match и автозагрузки

Этот код работает в локальной системе, но не работает на моем хосте. Этот код записан в файле initialize.php.

// -> All classes in directory
foreach (glob('classes/*.class.php') as $file) {
    require_once($file);
}


// Autoload class definitions
function my_autoload($class)
{
    if (preg_match('/\A\w+\Z/', $class)) {
        include('classes/' . $class . '.class.php');
    }
}

У меня есть две папки (частная и общедоступная) в корневом пути, а классы находятся в личной папке, например:

введите здесь описание изображения


person gadolf    schedule 31.12.2019    source источник
comment
Есть ли разница в значении $class на вашем хосте и в локальной системе? \w+ соответствует символам слова, возможно, на вашем хосте строка содержит и другие символы.   -  person The fourth bird    schedule 31.12.2019
comment
Ничего не отображает на моем хосте (нет вывода).   -  person gadolf    schedule 31.12.2019
comment
Не входит в блок if.   -  person gadolf    schedule 31.12.2019
comment
Активирована ли функция my_autoload? Каково значение $class при регистрации?   -  person The fourth bird    schedule 31.12.2019
comment
Я изменил вопрос, в этом случае класс администратора не знает. class Admin extends DatabaseObject. В этом случае первый выходной класс $ в my_autoload — это DatabaseObject.   -  person gadolf    schedule 31.12.2019
comment
да эта функция сработала.   -  person gadolf    schedule 31.12.2019
comment
Не уверен, но, возможно, эта страница полезна при использовании заглавных букв stackoverflow.com/questions/15027486/   -  person The fourth bird    schedule 31.12.2019
comment
Спасибо, я нашел проблему. Мое имя класса - верблюжий регистр, но не имя файла. Тем не менее, это работало правильно на локальной системе!!!   -  person gadolf    schedule 31.12.2019
comment
include('classes/' . strtolower($class) . '.class.php');   -  person gadolf    schedule 31.12.2019
comment
Это объясняется в связанном вопросе. Когда вы запрашиваете у Windows файл с именем DatabaseObject.php, он возвращает databaseobject.php, если он найден. В Linux нет, потому что имя файла не совпадает — если на самом деле у вас могут быть оба файла.   -  person Álvaro González    schedule 31.12.2019