Я использую функцию __autoload (), которая учитывает несколько различных соглашений об именах файлов для обеспечения обратной совместимости с предыдущими разработчиками.
Он выполняет простой цикл над каждым соглашением и проверяет, существует ли этот файл. Если файл существует, он загружается.
Для моей функции я делаю это для разных расширений файлов, таких как .inc, .class или .inc.php. Вы можете сделать то же самое, но искать верхний и нижний первые символы.
Я бы поместил это в метод searchForClassFile (), в другой части с комментарием «Найден файл».
РЕДАКТИРОВАТЬ (дополнительная информация):
Вместо того чтобы рекурсивно спускаться в каталог классов в поисках правильного файла, я отображаю имя класса в определенном месте. Это обычная практика. Например, foo_bar
отображается на [CLASS_DIRECTORY]/foo/bar.[EXTENSION]
. В нашем случае мы проверяем несколько разных расширений.
В вашем случае вам нужно принять решение о том, как вы хотите искать файл класса, но изменив свой код:
} else {
// Found a file
if ($f == $className . self::$classFileSuffix ||
$f == strtolower($className) . self::classFileSuffix) {
return $subPath;
}
}
Вместо strtolower () вы можете написать функцию, которая опускает только первый символ, или, если PHP> 5.3.0 (официально не выпущен), использовать функцию lcfirst ().