PHPメモ:スコープ
PHPのスコープについて整理しました。
スコープとは
変数や関数を使える範囲のこと。PHPの変数のスコープにはローカルとグローバルとスーパーグローバルの3つがある。
ローカルスコープ
関数の中で変数を使うときのスコープ。
function localVar($var){
var_dump($var);//ローカル
}
localVar('ローカル');
グローバルスコープ
関数の外で変数が使われるときのスコープ。関数の中で変数を使おうとするとNotice: Undefined variable: undefinedと表示される。(未定義の変数として扱われる)
$var = 'グローバル';
var_dump($var);//グローバル
関数の中で使うには変数の前にglobalと書く。
$var = 'グローバル';
var_dump($var);//グローバル
function localVar($var){
var_dump($var);//ローカル
global $var;
var_dump($var);//グローバル
}
localVar('ローカル');
グローバルで書かれていればincludeやrequireで読み込むファイルに書かれている変数も使える。
例えば、①index.phpとfunction.phpの2つのファイルを作って、function.phpで変数を作る。
// function.php
$var = 'インクルード';
②index.phpでfunction.phpを読み込んで変数の中身を調べる。
//index.php
include 'function.php';
var_dump($var);//インクルード
スーパーグローバル
PHPで元々定義されている変数。どこでも使える。$_SERVERや$_POSTなど。
https://www.php.net/manual/ja/language.variables.superglobals.php
まとめ
ローカルは関数の中で使えて、グローバルは関数の外で使えて、スーパーグローバルはどこでも使える。
変数名がかぶらないようにするために、基本的に変数はローカルでつくっておくべきという認識です。あってるかはわかりません。
参考
マニュアル
https://www.php.net/manual/ja/language.variables.scope.php