けいブログ

プログラミングとお金の知識を身につけていくブログ

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