Пространства имен в php 5.2 - PullRequest
12 голосов
/ 24 июня 2011

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

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

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

Ответы [ 5 ]

27 голосов
/ 24 июня 2011

Пространства имен не поддерживаются до 5.3. К сожалению, на самом деле нет способа приспособиться к ним в версии 5.2.

8 голосов
/ 25 июня 2011

Пространства имен доступны только с 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';
  }
}

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

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

3 голосов
/ 25 июня 2011

Пространства имен доступны в PHP начиная с PHP 5.3.0.

Источник: http://www.php.net/manual/en/language.namespaces.rationale.php

1 голос
/ 25 июня 2011

http://www.php.net/manual/en/language.namespaces.rationale.php

Пространства имен доступны в PHP начиная с PHP 5.3.0.

0 голосов
/ 02 декабря 2013

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

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

Пол

...