PHPにおけるOOPの静的メソッドと$this

静的メソッド内部では、$thisは利用できません。 これは、静的メソッドがオブジェクトのコンテキスト外で、 単にクラス名を参照して呼び出される可能性があるためです。

通常のメソッド内では、静的および通常のプロパティとメソッドの両方にアクセスできます。

例を見てみましょう。 通常のメソッドの例:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public function method()
    {
      echo self::$staticProperty; // 'static'を出力
      echo $this->usualProperty;  // 'usual'を出力
    }
  }
  
  $test = new Test;
  $test->method();
?>

静的メソッドの例:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public static function method()
    {
      echo self::$staticProperty; // 'static'を出力
      echo $this->usualProperty;  // エラーを発生させる
    }
  }
  
  $test = new Test;
  $test::method();
?>