変数のスコープ


変数のスコープ

変数のスコープとは、アクセス可能であり、変数の値が取得できる範囲のこと。代入した値が他の場所でも使えることを指しています。
範囲を超えると新たな変数として使用されることになります。

  • グローバルスコープ

    • 該当の変数の値が、どの場所からでも取得できる状態。
    • 他のファイルで同じ変数名を使っていた場合、値が上書きされてしまう。
  • ローカルスコープ

    • 該当の変数が特定の範囲内でしか使えず、それ以外は新しい別の変数として認識される。
    • 関数内の変数はすべてローカルスコープ。
<?php

function test()
{
    $a = 'hello';
}
echo $a; //undefined


関数内から外部の変数へアクセスする

関数内から外部の変数へアクセスする(または外部から内部へアクセスする)際は、global変数を用います。

<?php

function test()
{
    global $a; //グローバル宣言
    $a = 'hello';
}
echo $a; //hello

しかし、関数内、外からアクセスできるグローバル変数は、予期せぬアクセスにより値が破壊されてしまった場合に、原因を探りにくくなります。


値の共有

値のやりとりを関数内外でやる手段は、3つあります。

  • 外部から引数で渡し、内部からは戻り値として渡す。
    • 関数から外部へ戻り値として渡せる値は、1つだけに制限されます。
  • グローバル変数を使い、内外からアクセス可能にする。
    • 重複しない・させないよう、注意する必要があります。
  • 関数を呼び出す際に値を受け取るための変数を参照渡しする。
    • 関数内外に影響を及ぼさず、自由に変数を使え、数に制限がありません。