Пространства имен доступны только с 5.3
По крайней мере, в случае классов, вы можете использовать функцию class_exists
, чтобы проверить, был ли класс уже определен с подобным именем в глобальном пространстве имен. В сочетании с функцией __autoload()
вы можете создать один универсальный псевдоним и получить системную проверку для обоих классов, названных с помощью исходного имени, а также имени с добавлением какого-либо дополнительного идентификатора. Я буду использовать «нс» в качестве примера.
function __autoload($class){
try{
require_once('ns'.$class.'.php');
}catch(Exception $e){
echo 'The class is unavailable in pseudo-namespace as well as global';
}
}
Просто убедитесь, что требуемый путь указывает, где вы храните свои модели. Вы можете использовать другую папку вместо псевдонима.
Таким образом, любые дублирующиеся классы могут быть помещены в файлы отдельно от основного исполнения, которые включаются, только если они не существуют в глобальном. Хотя это не решает проблему физического переименования классов, это позволит вам поместить свои определения в разные каталоги для контроля версий и т. Д.