【PHP】スコープごとの変数の呼び出し方($this->、$GLOBALS[''])


概要

変数の呼び出し方です。
グローバル変数(クラスより外)は、$GLOBALS[' '] で呼ぶ。
プロパティ(クラス内、かつメソッドの外)は、$this->で呼ぶ。
ローカル変数(スコープ内)は、宣言した変数をそのまま呼ぶ。
ただし、グローバル変数はあまり使わない方が良いとされています。

出力の例

クラスを定義して同ファイル内で実行まで記述することはないですが、処理の流れに沿ったサンプルとして書きます。


<?php

$var = 'global value';

class SimpleClass
{
  // プロパティの宣言
  public $var = 'property value';

  // メソッドの宣言
  public function displayVar() {
    $var = 'local value';
    echo $GLOBALS['var']. PHP_EOL;  // 'global value'を出力
    echo '<br>';
    echo $this->var. PHP_EOL;  // 'property value'を出力
    echo '<br>';
    echo $var. PHP_EOL;  // 'local value'を出力
  }
}

$sample = new SimpleClass;
$sample->displayVar();

PHP_EOLは改行文字で<br>ではないためブラウザで出力する際は改行表示されません。
そのため改行に"<br>"をechoしています。

出力イメージ
global value
property value
local value

別例

こちらも処理の流れに沿ったサンプルとして書きます。
にしてもメソッドの下に実行コードを書くのは気持ち悪い...


<?php

$var = 'global value';

class SimpleClass
{
  // プロパティの宣言
  public $var = 'property value';

  // メソッドの宣言
  public function displayVar() {
    $var = 'local value';
    echo $var;  // 'local value'を出力
  }
}

echo $var. '<br>';  // 'global value'を出力
$sample = new SimpleClass;
echo $sample->var. '<br>';  // 'property value'を出力
$sample->displayVar();
出力イメージ
global value
property value
local value