Método __get

O método __get é chamado automaticamente ao tentar obter o valor de uma propriedade inexistente ou inacessível de um objeto. Este método mágico aceita um parâmetro - o nome da propriedade solicitada.

Sintaxe

phppublic function __get(string $name) {
  // implementação
}

Exemplo

Vamos criar uma classe com o método __get, que retornará valores para propriedades inexistentes:

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;
?>

Resultado da execução do código:

php'John'

Exemplo

O método __get pode ser usado para implementar propriedades dinâmicas:

php<?php
  class DynamicProperties {
    public function __get($name) {
      return "Valor dinâmico para {$name}";
    }
  }
  
  $obj = new DynamicProperties();
  echo $obj->test;
?>

Resultado da execução do código:

php'Valor dinâmico para test'

Veja também

  • método __set,
    que é chamado ao definir uma propriedade inexistente
  • método __call,
    que é chamado ao invocar um método inexistente