Tibor:
It's not a good idea to use $_ENV unless you are specifying an environmental variable. This is probably a better example that I found on another page in php.net
<?php
function test() {
$foo = "local variable";
echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
echo '$foo in current scope: ' . $foo . "\n";
}
$foo = "Example content";
test();
?>
Superglobais
Superglobais — Superglobais são variáveis nativas que estão sempre disponíveis em todos escopos
Descrição
Várias variáveis pré-definidas no PHP são "superglobais", que significa que elas estão disponível em todos escopos para todo o script. Não há necessidade de fazer global $variable; para acessá-lo dentro de funções ou métodos.
Estas variáveis superglobais são:
Changelog
| Versão | Descrição |
|---|---|
| 4.1.0 | Superglobais foram introduzidas no PHP. |
Notas
Nota: Disponibilidade da variável
Por padrão, todas as superglobais estão disponíveis, mas há diretivas que afetam esta disponibilidade. Para mais informação, consulte na documentação sobre variables_order.
Nota: Lidando com register_globals
Se a obsoleta diretiva register_globals é definida para on então variáveis contidas irão também estar disponíveis no escopo global do script. Por exemplo, $_POST['foo'] também existiria como $foo.
Para informação relacionada, veja o FAQ intitulado "Como register_globals pode afetar?"
Nota: Variável variáveis
Superglobais não podem ser usadas como variável variáveis dentro de função ou métodos de classes.
You can go the other way as well i.e.
<?php
function test() {
$GLOBALS['foo'] = "Example content";
}
test();
echo "<p>$foo</p>";
?>
This doesn't appear to be affected by register_globals, I have it switched off.
You can use superglobals to make your variables available everywhere without declaring them global.
<?php
$_ENV['mystring'] = 'Hello World';
$_ENV['myarray'] = array('Alpha', 'Bravo', 'Charlie');
function test() {
print $_ENV['mystring'];
print_r($_ENV['myarray']);
}
test();
?>
