2009-11-09 2 views
0

У меня есть часть кода, как показано в следующем:"Global" переменная сфера в PHP

---- file.php ----

require_once("mylib.php"); 

function($a,$b) 
{ 
    $r = $_GLOBALS['someGlobal']; 
    echo $r; 
} 

---- MyLib .php ----

$_GLOBALS['someGlobal'] = "Random String"; 

Это немного упростили, но точная проблема у меня есть I га не нашел некоторых связанных вещей, но ничего не ответил на мой вопрос напрямую.

Когда я звоню function($a,$b) ничего не echo'd, то есть - $r «пустой», как будто ничего и не было назначено на $_GLOBALS['someGlobal'];

Кроме того, я попытался со следующим:

global $someGlobal; 
$someGlobal = "Random String"; 

То же самое, никакого эффекта. Кроме того, в file.php, если я попробую с global, или только с $someGlobal он все еще не работает.

Насколько я знаю, из документации по php.net с использованием глобального $someGlobal в mylib.php (и с учетом того, что вставлено на верхний уровень файла.php), что на самом деле это не сделало бы многое, поскольку оно уже на насколько я могу судить, «верхний уровень» иерархии области. Тем не менее, я думал, что регистрация его как глобальной может позволить ей получить доступ изнутри функции, но это явно не так.

Может кто-нибудь объяснить, почему, и объяснить, как обойти это?

Редактировать: Я не должен этого делать в file.php, если я использую $_GLOBALS['someGlobal'];, значение восстанавливается отлично, если оно не находится в функции.

+0

Ничего себе ... эпическое чтение сбой с моей стороны. Спасибо людям. – Viashimo

ответ

0

From the docs, нет в переменной $GLOBALS нет _:

Это прекрасно работает для меня:

$GLOBALS['glob'] = "string"; 

function foob() { 
    echo $GLOBALS['glob']; 
} 

foob(); 
Смежные вопросы