[PHP] Zmienne globalne

hxv

Były Moderator
Dołączył
Sierpień 9, 2006
Posty
797
Napotkałem na drobny problem podczas pisania skryptu z którym nie mogę sobie poradzić. Z jakiegoś powodu PHP po dodaniu elementu do tablicy $GLOBALS nie chce odczytywać zmiennych w includowanym pliku który dołączony jest wewnątrz funkcji która modyfikuje tą tablicę:

test.php
PHP:
<?php
error_reporting(E_ALL);

function x(){
	$a = array('x'=>'y');
	foreach($a as $k=>$v){
		$GLOBALS[$k] = $v;
	}
	echo 'Inside: ';
	include('test_inc.php');
}

x();

echo 'Outside: ';
include('test_inc.php');

?>

test_inc.php:
PHP:
<?php
echo $x;
?>
Wynik działania skryptu:
Kod:
Inside:
Notice: Undefined variable: x in C:\Documents and Settings\hxv\Pulpit\test_inc.php on line 2
Outside: y
Przy odwołaniu do $GLOBALS['x'] żadnego błędu nie ma, ale zależy mi na normalnym używaniu zmiennych. Ma ktoś pomysł jak to rozwiązać/z czego wynika ten błąd?
 

kurde-death

Użytkownik
Dołączył
Listopad 14, 2010
Posty
2
Bo wywołujesz zmienną wewnątrz funkcji której po prostu niema. Natomiast $GLOBALS
jest zmienną super globalną która zawiera wszystkie zmienne globalne i dodając nawet
w funkcji trzeba pamiętać że zmienia dodana do $GLOBALS jest globalna, a nie lokalna.
Jak zrobisz odwołanie do globalnej zmiennej $x, to wtedy wewnątrz funkcji też się wyświetli.

PHP:
<?php
global $x;
echo $x;
?>
 
Do góry Bottom