Вы можете переименовать эти файлы, чтобы сделать их совместимыми с PSR-4 (маловероятно, потому что это требует использования пространств имен - в коде 10-летней давности?) или PSR-0. Кроме того, вы должны удалить любую явную загрузку этих файлов через include
, include_once
, require
или require_once
, поскольку имена файлов изменились.
PHP автоматически загрузит эти классы по имени класса. Это может привести к проблемам, если чувствительность к регистру в имени класса не соблюдается везде. Пример:
class UpperCase {}
$a = new upperCase();
Автозагрузка попытается найти файл, оканчивающийся на upperCase.php
, который не будет соответствовать требуемому PSR-0 UpperCase.php
, поэтому код завершится ошибкой. Однако это сработает, и ситуация не улучшится:
class UpperCase {}
$b = new UpperCase();
$a = new upperCase();
Причина в том, что PHP обрабатывает имена классов без учета регистра, поэтому после загрузки класса вы можете использовать любой регистр в его имени. Только первое вхождение в вашем пути к коду должно совпадать. Проблема в том, чтобы быть уверенным, где это на самом деле, поэтому, по сути, это должно быть правильно везде.
Да, функция classmap — более простой способ. Но вы все равно захотите удалить вызовы include/require
, чтобы немного оптимизировать производительность, так что вам все равно придется прикасаться к коду. И несмотря на возраст, его приходится поддерживать - так почему бы не сделать это полноценно, перейдя на всем известный стандарт автозагрузки. Это поможет вам в долгосрочной перспективе, когда вам придется параллельно поддерживать классы, совместимые с PSR-0/4, и этот старый код.
person
Sven
schedule
21.04.2016