PHPのScope
3つある
local scope
普通にlocalのscopeのことだが、他の言語と異なる
global scope
普通にglobalのscopeのこと
super global
特殊なやつ
e.g. $GLOBALS
class内のmethod間も空間を共有してるっぽい?
こういうふうにmethod内で関数を定義すると、別のmethodで同名の関数は定義できない
phpclass Hoge {
private function a($before, $after) {
function f($a, $b) { // f
return $a->id <=> $b->id;
}
return array_udiff($a, $b, 'f');
}
private function b($before, $after) {
function f($a, $b) { // fは重複しているのでエラー
return $a->id <=> $b->id;
}
...
}
}
まあmethod内で関数定義することなんてないと思うけど

global変数
php$a = 1;
$b = 2;
function Sum() {
global $a, $b; // `global`をつけることで、globalにアクセスできる
$b = $a + $b; // 3
print_r($GLOBALS); // 全てのglobal変数を取得
}
すごい仕様だなー
変数名かぶってたりしたらどうなるんや