Автор Тема: $HTTP_*_VARS -- deprecated  (Прочитано 3332 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dub

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 236
  • +0/-0
  • 0
    • Просмотр профиля
    • http://binartis.com/
$HTTP_*_VARS -- deprecated
« : 27 Августа 2003, 17:17:57 »
С версии PHP 4.1.0 введены новые  переменные окружения и deprecated старые. Теперь советуют использовать, к примеру, $_SERVER вместо $HTTP_SERVER_VARS. $HTTP_*_VARS \'still available but deprecated\'.
Что в данном случае означает deprecated? Что в любой из будущих версий его поддержка может быть отключена и полагаться на $HTTP_*_VARS больше не стоит? А все места в коде, где, к примеру, скрипт получает get-переменную, нужно вместо
$var = $HTTP_GET_VARS[\'var\'];
 переписать так:
$var = $HTTP_GET_VARS[\'var\'];
if (isset($_GET)) $var = $_GET[\'var\']; // для PHP 4.1.0+
else $var = $HTTP_GET_VARS[\'var\']; // для ранних версий

?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
$HTTP_*_VARS -- deprecated
« Ответ #1 : 27 Августа 2003, 18:19:03 »
Ты сам ответил на все свои вопросу.
Ну, разве что, переписать можно по-разному.

Например, правильнее будет вот так:

$my_get_vars=array(\'sort\',\'id\');
foreach($my_get_vars as $var) if(isset($_GET[$var])) $_GLOBALS[$var]=$_GET[$var]; else $_GLOBALS[$var]=\'\';

Оффлайн dub

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 236
  • +0/-0
  • 0
    • Просмотр профиля
    • http://binartis.com/
$HTTP_*_VARS -- deprecated
« Ответ #2 : 27 Августа 2003, 19:00:49 »
Не совсем понял.
Идея в том, чтобы
  1) делать переменные глобально доступными
  2) несколько переменных сделать доступными одним циклом, а не писать для каждой две строки?
Для глобально доступных переменных вроде $GLOBALS, а не $_GLOBALS.
И ты присваиваешь либо значение из $_GET либо пустую строку. То есть особого отношения к проблеме "до 4.1.0 и после..." это не имеет, зато каждую из этих переменных впоследствии можно сравнивать только с пустой строкой, а не использовать if (!isset($var) || $var == \'\'). Если я правильно понял.
Для совместимости версий твое решение можно трансформировать так:
$my_get_vars = array(\'sort\',\'id\');
foreach($my_get_vars as $var)  {
  if(isset($_GET[$var])) $GLOBALS[$var]=$_GET[$var];
  elseif(isset($HTTP_GET_VARS[$var])) $GLOBALS[$var]=$HTTP_GET_VARS[$var];
  else $GLOBALS[$var]=\'\';
}

Спасибо.

Оффлайн dub

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 236
  • +0/-0
  • 0
    • Просмотр профиля
    • http://binartis.com/
$HTTP_*_VARS -- deprecated
« Ответ #3 : 27 Августа 2003, 19:04:12 »
Собственно, основной вопрос состоял в следующем:
Цитировать
полагаться на $HTTP_*_VARS больше не стоит?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
$HTTP_*_VARS -- deprecated
« Ответ #4 : 27 Августа 2003, 20:17:48 »
не стоит, но опять же, если они когда-либо и пропадут, то добавить в начало сайта строчку $HTTP_*_VARS=$_* настолько не проблема, что я абсолютно не заморачиваюсь на эту тему.

Кстати, а почему тебя эта проблема волнует? Чем тебя не устраивает писать просто в новом синтаксисе?

Оффлайн dub

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 236
  • +0/-0
  • 0
    • Просмотр профиля
    • http://binartis.com/
$HTTP_*_VARS -- deprecated
« Ответ #5 : 27 Августа 2003, 21:46:53 »
Волнует меня переносимость. У меня вот на локалхосте PHP 4.3.1, а у хостера - 4.0.1. Все до сих пор писанные скрипты писаны с использованием $HTTP_*_VARS. Хочется выработать алгоритм написания скриптов, которые будут работать для любых версий PHP4 и при этом не устареют со временем, чтоб потом не пришлось выискивать места получения переменных и исправлять их вручную.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
$HTTP_*_VARS -- deprecated
« Ответ #6 : 27 Августа 2003, 22:40:29 »
dub
[off] 4.0.1 - это уже такой антиквариат :) Не помню, когда я такую версию видел. Лучше уже хостера пинай[/off]

Обычно в скрипте есть файл с настройками, который подключается во все файлы данного скрипта. Вот в него и вставь :
$HTTP_*_VARS=$_*

хотя я все же советую использовать последние версии. Больше фич меньше багов.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн dub

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 236
  • +0/-0
  • 0
    • Просмотр профиля
    • http://binartis.com/
$HTTP_*_VARS -- deprecated
« Ответ #7 : 28 Августа 2003, 00:40:56 »
Цитировать
Макс:
Обычно в скрипте есть файл с настройками, который подключается во все файлы данного скрипта. Вот в него и вставь

Неплохая мысль. Проверку существования массива $_* можно действительно проводить в конфиге, и если его нет, подставлять
$_* = $HTTP_*_VARS;
А весь код уже писать в новом синтаксисе.

Цитировать
хотя я все же советую использовать последние версии.

Пнуть хостера дело нехитрое. Но это если с позиции клиента. А с позиции программера хочется писать максимально совместимые скрипты.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
$HTTP_*_VARS -- deprecated
« Ответ #8 : 28 Августа 2003, 01:05:15 »
кстати наверное логичнее будет использовать ссылки
$_* = & $HTTP_*_VARS;

[off]По поводу совместимости - имхо лишняя трата своего времени и усложнение скрипта. Ну или хотя бы ограничиться версией 4.3.0, но никак не 4.0.1[/off]
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28