⊗ppOpMgSP 91 of 107 menu

Gravação de propriedades através de magia em OOP em PHP

O método mágico __set é chamado ao tentar alterar o valor de uma propriedade inexistente ou inacessível. Ele aceita como parâmetros o nome da propriedade e o valor que está sendo atribuído a ela.

Vamos ver um exemplo prático. Suponha que temos a seguinte classe Test:

<?php class Test { private $prop1; private $prop2; } ?>

Vamos criar neste classe o método mágico __set, que usando a função var_dump exibirá o nome da propriedade que está sendo acessada e o valor que está tentando ser definido para ela:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { var_dump($property . ' ' .$value); } } ?>

Vamos testar o funcionamento da nossa classe:

<?php $test = new Test; $test->prop = 'value'; // var_dump do método __set exibirá 'prop value' ?>

Agora, vamos definir o valor para a propriedade cujo nome está armazenado na variável $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // define o valor } } ?>

Agora podemos escrever nas propriedades privadas de fora da classe:

<?php $test = new Test; $test->prop1 = 1; // escreverá 1 $test->prop2 = 2; // escreverá 2 ?>

Podemos escrever, no entanto, verificar se algo foi escrito lá - não, pois as propriedades são privadas.

Pode-se criar um getter para essas propriedades ou simplesmente usar o método mágico __get. Vamos usar a segunda opção:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Getter mágico de propriedades: public function __get($property) { return $this->$property; } } ?>

Agora podemos verificar o funcionamento da nossa classe. Vamos testar:

<?php $test = new Test; $test->prop1 = 1; // escreverá 1 $test->prop2 = 2; // escreverá 2 echo $test->prop1; // exibirá 1 echo $test->prop2; // exibirá 2 ?>

Na verdade, claro, não devemos permitir que qualquer um escreva em propriedades privadas, caso contrário, perde-se o sentido dessas propriedades privadas (seria mais fácil torná-las públicas e pronto).

Portanto, este método deve ser usado apenas quando há uma real necessidade. Nas próximas lições, veremos ainda mais exemplos de aplicações bem-sucedidas.

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