Morgan » 2010.10.07 14:37

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

Код:

1
2
3
4
5
6
7
$var = 'привет';
function test()
{
echo $var;
}
 
test();

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

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

Код:

1
extract($GLOBALS, EXTR_REFS);

что в итоге

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
function test()
{
extract($GLOBALS, EXTR_REFS);
echo $somevar;
$somevar = 'blabla';
}
 
$somevar = 'привет';
 
test();
 
echo $somevar;

дает 'приветblabla'

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

Gemorroj » 2010.10.07 15:37

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

Morgan » 2010.10.08 16:31

обусловленно необходимостью.

не пользоваться глобальной областью видимости. а хотя бы со свойствами класса

не подходит

Morgan » 2010.10.11 15:35

)

Nu3oN » 2010.10.11 18:12

как же ооп в таких ситуациях радует гг
Добавлено спустя   1 минуту  6 секунд:
п.с переменная переменной это ниесть гуд...

Morgan » 2010.10.11 21:46

Nu3oN написал:

п.с переменная переменной это ниесть гуд...

немного подправил код.