PHPは制御構文(ifなど)でブロックされていても変数のスコープ(変数が使える範囲)が制限されないらしい。
スコープを狭くしたければ関数やメソッド内で定義するとよいらしい。
jsにこの辺は、似ている。
<?php
$global = 'global';
if (! empty($global)) {
// $globalはどこからでもアクセスできる
$global = 'globaltest!!';
}
function local () {
// 関数やメソッド内で定義するとこのブロックの外では使えない。
$local = 'local';
}
// 使える globaltest!!
echo $global;
// Notice: Undefined variable:
echo $local;
一年前くらいはローカルがなぜいいのかわからなかったが今ならわかる。
全然、覚えてないことろで定義した変数でバグるからだ。
パーフェクトPHPを読んでなるほどと思ったことをアウトプットしてみた。
参考文献
パーフェクトPHP
小川 雄大 (著), 柄沢 聡太郎 (著), 橋口 誠 (著)
出版社: 技術評論社 (2010/11/12)
https://www.amazon.co.jp/%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88PHP-PERFECT-3-%E5%B0%8F%E5%B7%9D-%E9%9B%84%E5%A4%A7/dp/4774144371/ref=tmm_other_meta_binding_swatch_0?_encoding=UTF8&qid=&sr=