PHP - Вопрос об указании переменной с глобальной областью действия вне функции - PullRequest
1 голос
/ 11 января 2011

Я понимаю, что если вы объявите переменную внутри функции php с ключевым словом global, она будет ссылаться на переменную, объявленную вне функции, но зачем программисту php объявлять переменную вне области действия как global??Спасибо!

Я понимаю, для чего это нужно:

<?
$a = 1;
function $boo() {
    global $a;
    echo $a;
}
?>

Но что я понимаю, зачем мне это делать?

<?
global $a;
function $boo() {
    //foo
}
?>

Ответы [ 3 ]

2 голосов
/ 11 января 2011

Это связано с областью php. Если у вас есть файл a.php с таким классом, как этот

<?
class test()
{
  function test()
  {
    include('b.php');
  }
}
?> 

и файл b.php

<?
$a = 1;
?>

Тогда $ aбудет доступен только в области действия test ()

, если у вас есть global $a в b.php, $ a затем становится глобальной переменной

вот документ php об этом: http://php.net/manual/en/function.include.php

0 голосов
/ 11 января 2011

Ну, имхо, использование глобальных переменных - плохая практика программирования. Это может вызвать непреднамеренные побочные эффекты в вашей программе, которые трудно отладить, и усложняет их обслуживание.

0 голосов
/ 11 января 2011

Понятия не имею, почему вы захотите это сделать.Для всех намерений и целей (если я не очень, очень сильно ошибаюсь) это точно так же, как просто:

<?
var $a;
function $boo() {
  // foo
}
?>

Что в свою очередь совпадает с

<?
function $boo() {
  // foo
}
?>

, потому чтовам обычно не нужно создавать экземпляры ваших переменных в PHP.

Очень любопытно, почему вы используете функции с переменными именами?(function $boo() {})

...