Пространства имен в php 5.2

Я сделал небольшую паутину, используя пространства имен. У меня это на моем компьютере, и я собираюсь переместить его на бесплатный хостинг, который использует php 5.2. Синтаксический ярлык для php 5.2 интерпретирует их как ошибки.

Поддерживаются ли пространства имен php 5.2?

Если нет способа использовать их с небольшими изменениями в существующем коде?

Ответ 1

Пространства имен не поддерживаются до 5.3. На данный момент нет способа адаптировать их к 5.2.

Ответ 2

Пространства имен доступны только с 5.3

Как минимум, в случае классов вы можете использовать функцию class_exists, чтобы проверить, был ли класс уже определен с похожим именем в глобальном пространстве имен. В сочетании с функцией __autoload() вы можете создать один универсальный псевдоним и проверить систему для обоих классов, названных исходным именем, а также с именем с дополнительным дополнительным идентификатором. В качестве примера я использую "ns".

function __autoload($class){
  try{
     require_once('ns'.$class.'.php');
  }catch(Exception $e){
     echo 'The class is unavailable in pseudo-namespace as well as global';
  }
}

Просто убедитесь, что требуемые точки маршрута находятся там, где вы держите свои модели. Вы можете использовать другую папку вместо псевдонима.

Таким образом, любые дублированные классы могут быть помещены в файлы отдельно от основного исполнения, которые включены только в том случае, если они не существуют в глобальном. Несмотря на то, что это не решит проблему физического переименования классов, это позволит вам поместить ваши определения в разные каталоги для целей управления версиями и т.д.

Ответ 5

Я только что столкнулся с этой проблемой, и сам разработал загрузку изображений script сам и добавил некоторый сторонний код для помощи в обработке изображений (обрезка), но они используют пространства имен, отлично работают на моей машине разработки, но когда я загружаюсь на live server, я получаю ошибку Parse.

К счастью, мой хост поддерживает php 5.3 и 5.4, поэтому я попросил их изменить его на 5.3 для меня, я надеюсь, что он решит проблемы, возникающие у меня, просто удалив пространства имен, сделанные script fail:(

Пол