2010-11-21 12 views
1

Я знаю, что я могу использовать $ GLOBALS ['var'] внутри функции для ссылки на переменные в глобальной области. В любом случае я могу использовать какое-то объявление внутри функции, чтобы я мог использовать $ var без необходимости использовать $ GLOBAL ['var'] каждый раз?Преобразование всех vars в глобальную область

Joel

+4

Переменная сфера имеет цель. Почему вы хотите вернуть это? – Gumbo

+1

Это выполнимо, но, скорее всего, очень плохая идея. См. Вопрос @ Gumbo –

+0

Я полностью согласен, что это плохая идея. Но это исключительно для практики, чтобы лучше понять, как создать такую ​​вещь, когда она в ней нуждается (хотя, опять же, это плохая идея) – Joel

ответ

1

Хотя это не рекомендуется, но если вы хотите, вот что вы можете сделать:

Если вы только хотите, чтобы получить значения из Варса (а не SET значения), просто используйте extract:

extract($GLOBALS); 

Это будет извлекать и создавать все переменные в текущей области.

+0

Отсутствует «S» - это $ GLOBAL, но он отлично работает! благодаря :) – Joel

1

Как насчет использования статического класса?
, такие как

class example 
{ 
    public static $global; 
    public static function set($arr) 
    { 
    foreach ($arr as $key=>$val) 
    { 
     self::$global[$key] = $val; 
    } 
    } 
} 

function example_function() 
{ 
    var_dump(example::$global); 
} 

example::set(array('a'=>1, 'b'=>2)); 
example_function(); 
1

Вы можете использовать global ключевое слово, поэтому вы можете использовать тип $var вместо $GLOBALS['var'] внутри функции.

function myFunc() { 
    global $var; 
    $var = 3; 
} 
$var = 1; 
myFunc(); 
echo $var; 

Выход: 3

Смежные вопросы