Xwab
Форумыnavigate_nextПрограммирование на PHP

$GLOBALS и все еже с ним
Сообщения
wapmorgan

все знают в функциях (function x(){...}) используется локальная область для хранения переменных.
то есть такое не прокатит
$var = 'привет';
function test()
{
echo $var;
}

test();
// можно конечно заюзать global $var, или $GLOBALS['var']

я сделал импорт глобальных переменных так

foreach($GLOBALS as $var_name = $var_value)
{
$$var_name =& $GLOBALS[$var_name];
}


что в итоге
      function test()
   {
         foreach($GLOBALS as $var_name => $var_value)
      {
      $$var_name =& $GLOBALS[$var_name];
      
      }
      
   echo $somevar;
   $somevar = 'blabla';
   }

$somevar = 'привет';

test();

echo $somevar;
дает 'приветblabla'

С уже зарегистрированными переменными вопрос решили, но вот как быть с теми которые были созданы в функции?
каким образом их можно вынести в глобальную видимость?
// использовать $GLOBALS['var'] и global $var для каждой переменной не предлагать

07 Окт 2010, 12:05
suhonok

register_global on

07 Окт 2010, 12:28
wapmorgan

suhonok,

08 Окт 2010, 20:23
M0rbid

не совсем понятен вопрос. какого результата нужно добится в контексте приведенного примера?

08 Окт 2010, 20:26
wapmorgan

требуется возможность использовать конструкции $somevar вместо $GLOBALS['somevar'] в функции (в локальной области), либо в конце функции вынести все локальные переменные в глобальную видимость.

08 Окт 2010, 20:33
M0rbid

Morgan, нужно чтото типа $GLOBLAS = array_merge($GLOBLAS, $LOCALS); ?

08 Окт 2010, 20:41
XsErG

Это мегаговнокод
/offtop
Как раз для govnokod.ru
/offtop
Области видимости придумали не для того, что бы вы их убирали, если надо убирать - плохая логика, проблема в другом месте.
Ну и ОО подход

08 Окт 2010, 20:45
Амбарцумян

echo $somevar;
$somevar = 'blabla';

если поменять местами, дает blablablabla, сорь за оффтоп, ща подумаем

08 Окт 2010, 20:46
wapmorgan

6, ага
7,

08 Окт 2010, 20:58
XsErG

?  Все что написано в первом посте - бред.
Перелинковка в каждой функции ВСЕХ переменных это просто супер конечно, xdebug красивый профайл выдал? Гг.
P.S. Выносить переменные за функцию - обратная операция вносу ее туда
Получить переменные поможет: get_defined_vars();
P.S. А еще не плохо было бы прочитать про extract().
P.S. Но вообще за такие костыли надо этими костылями по горбу давать

08 Окт 2010, 21:21
Ответить на тему