@yoshiki_utakata

yoshiki_utakataの知見とか知識とかをまとめていきます

View on GitHub

PHPではまりやすい変数のスコープ

if, for ブロック

if, forのブロック内で宣言した変数は、そのブロックを出ても有効

if($flag) {
    $hoge = 'Hello';
}

echo $hoge; //コンパイルエラーにはならない
// $flagがtrueならHelloだし、falseならnull

グローバル変数と関数

$a = 1;

  function fuga() {
    echo $a;
  }

  fuga(); // => null

globalの値を参照したい場合は

$a = 1;

function fuga() {
    global $a
    echo $a; // => 1
    
    echo $GLOBALS['a']; // => 1
}

クラス内のメソッド

$a = 1;

class Hoge {
    function fuga() {
        global $a;
        echo $a;
    }
}

これで fuga() を呼んでも 1 は出力されない!!

autoloadでの変数スコープでハマる

参考