Мне было интересно, что именно происходит, когда я это делаю:
$my_variable = 'foo'; function whatever(){ $my_variable = 'bar'; global $my_variable; }
Я знаю, что в рамках функции $my_variable
теперь «foo».
Что происходит внутри? Когда я делаю $my_variable = 'bar';
внутри моей функции я создал локальную переменную. Когда я делаю global $my_variable;
на следующей строке, что именно происходит? Локальный автоматически удаляется?
До тех пор, пока global
обработка не будет обработана, функция будет использовать локальную копию экземпляра varaible. Как только он объявлен глобальным, локальная версия будет скрыта (или может быть уничтожена, а не обязательно …), и доступна только глобальная версия. например:
$z = 'foo'; function whatever() { echo $z; // warning: undefined variable $z = 'bar'; echo $z; // bar global $z; echo $z; // foo } whatever();
Да , локальный автоматически удаляется или, вероятно, лучше формулируется, он заменяется глобальной переменной.
Подумайте об этом так:
$GLOBALS['my_variable'] = 'foo'; function whatever(){ $my_variable = 'bar'; $my_variable = $GLOBALS['my_variable']; }