メソッド __get

メソッド __get は、オブジェクトの存在しない、またはアクセス不可能なプロパティの値を取得しようとしたときに自動的に呼び出されます。このマジックメソッドは1つのパラメータ、すなわち要求されたプロパティの名前を受け取ります。

構文

phppublic function __get(string $name) {
  // 実装
}

例

存在しないプロパティに対しても値を返す __get メソッドを持つクラスを作成します:

php<?php
  class User {
    private $data = [
      'name' => 'John',
      'age' => 30
    ];
    
    public function __get($name) {
      if (array_key_exists($name, $this->data)) {
        return $this->data[$name];
      }
      return null;
    }
  }
  
  $user = new User();
  echo $user->name;
?>

コードの実行結果:

php'John'

例

__get メソッドは、動的プロパティを実装するために使用できます:

php<?php
  class DynamicProperties {
    public function __get($name) {
      return "Dynamic value for {$name}";
    }
  }
  
  $obj = new DynamicProperties();
  echo $obj->test;
?>

コードの実行結果:

php'Dynamic value for test'

関連項目

  • メソッド __set,
    存在しないプロパティに値を設定する際に呼び出されます
  • メソッド __call,
    存在しないメソッドを呼び出そうとした際に呼び出されます