Você está aqui: PHP ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais |
Como usar Reflexão (Reflection) no PHP - Entenda a Reflection API do PHP para fazer introspeção de seus códigosQuantidade de visualizações: 1046 vezes |
Várias linguagens de programação tais como Java, C++, Delphi, JavaScript, entre outras, permitem o uso de reflexão (Reflection), ou RTI (Runtime Type Information). E o PHP não fica de fora. A Reflection nos permite analisar nossos códigos PHP e obter informações sobre as classes, métodos e atributos de cada uma delas, assim como fazer chamadas de método dinamicamente. Vamos começar com um exemplo? Veja o código para uma classe PHP: <? // vamos declarar a classe Produto class Produto{ private $nome; private $preco; // define o nome do produto function setNome($nome){ $this->nome = $nome; } // define o preço do produto function setPreco($preco){ $this->preco = $preco; } // obtém o nome do produto function getNome(){ return $this->nome; } // obtém o preço do produto function getPreco(){ return $this->preco; } } // vamos criar um objeto da classe Produto $produto = new Produto(); // define os valores dos atributos $produto->setNome("Arroz Tipo A"); $produto->setPreco(4.59); // obtém os valores dos atributos echo "Nome do produto: " . $produto->getNome(); echo "<br>Preço do produto: " . $produto->getPreco(); ?> Esta classe PHP possui dois atributos privados (nome e preco), dois métodos mutatórios (setNome e setPreco) e dois métodos acessórios (getNome e getPreco). Vejamos agora como usar a PHP Reflection API para obter e listar os nomes dos métodos dessa classe. Veja o exemplo completo: <? // vamos declarar a classe Produto class Produto{ private $nome; private $preco; // define o nome do produto function setNome($nome){ $this->nome = $nome; } // define o preço do produto function setPreco($preco){ $this->preco = $preco; } // obtém o nome do produto function getNome(){ return $this->nome; } // obtém o preço do produto function getPreco(){ return $this->preco; } } // vamos criar um objeto da classe Produto $produto = new Produto(); // vamos criar um objeto da classe ReflectionClass $rc = new ReflectionClass($produto); // vamos obter os nomes dos métodos da classe Produto $metodos = $rc->getMethods(); // e agora vamos listá-los for($i = 0; $i < count($metodos); $i++){ echo $metodos[$i] . "<br>"; } ?> Observe no código como criamos um novo objeto da classe ReflectionClass fornecendo como argumento um objeto da classe Produto. Em seguida fazemos uma chamada ao método getMethods() da instância de ReflectionClass para listar os métodos declarados na classe Produto. O resultado será algo parecido com: Method [ public method setNome ] Method [ public method setPreco ] Method [ public method getNome ] Method [ public method getPreco ] Esta dica foi escrita e testada no PHP 8. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de PHP |
Veja mais Dicas e truques de PHP |
Dicas e truques de outras linguagens |
JavaScript - Como exibir apenas dois dígitos após o ponto decimal em JavaScript usando a função toFixed() do objeto Number |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |