⊗ppOpMgGP 88 of 107 menu

Obtendo propriedades através de magia em OOP no PHP

O próximo método mágico que vamos analisar é chamado __get. Este método é acionado ao tentar ler o valor de uma propriedade privada ou protegida.

Se o método __get for implementado em alguma classe, todos os acessos a propriedades inexistentes ou ocultas serão tratados por este método.

Nesse caso, o PHP automaticamente passará o nome da propriedade solicitada no primeiro parâmetro deste método, e o valor retornado por este método será interpretado como o valor da propriedade que foi acessada.

Provavelmente ainda não está muito claro como isso funciona, então vamos ver um exemplo prático. Suponha que temos a seguinte classe Test com uma propriedade privada e uma pública:

<?php class Test { public $prop1 = 1; // propriedade pública private $prop2 = 2; // propriedade privada } ?>

Vamos adicionar à nossa classe o método mágico __get, que inicialmente vai simplesmente retornar o nome da propriedade que foi acessada:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // simplesmente retorna o nome da propriedade } } ?>

Vamos testar o funcionamento do método mágico criado. Vamos acessar três tipos de propriedades: uma propriedade pública, uma privada e uma inexistente:

<?php $test = new Test; // Acessando uma propriedade pública: echo $test->prop1; // exibirá 1 - ou seja, o valor da propriedade // Acessando uma propriedade privada: echo $test->prop2; // exibirá 'prop2' - o nome da propriedade // Acessando uma propriedade inexistente: echo $test->prop3; // exibirá 'prop3' - o nome da propriedade ?>

Como você pode ver, nosso método mágico reage ao acesso de propriedades privadas e inexistentes, mas ignora o acesso às propriedades públicas - elas funcionam como funcionavam antes.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar