Trabalhando com métodos mágicos __Get e Set em PHP
21/08/2016
0
1º - Trabalhando com métodos mágicos (__Get e __Set) como faço para sobrescrever um método protegido (protected $salario;)? Como os métodos get e set era mais fácil eu era só sobrescrever o método get e na nova classe.
És o print do código a baixo quero o contabilista e o programador tenham o cálculo do salário efectuado de forma diferente, como faço usando o código abaixo?
2º - Posso trabalhar com os métodos get e set em vez dos mágicos (__get e __set), será não haverá problema no código?
3º - Quais as vantagens de um e de outro?
És o print do código a baixo quero o contabilista e o programador tenham o cálculo do salário efectuado de forma diferente, como faço usando o código abaixo?
2º - Posso trabalhar com os métodos get e set em vez dos mágicos (__get e __set), será não haverá problema no código?
3º - Quais as vantagens de um e de outro?
<?php // Criação da classe funcionário class Funcionario{ private $nome; private $datanasc; private $identificacao; protected $salario; // Criação dos métodos __Get e __Set public function __get($valor){ return $this->$valor; } public function __set($propriedade,$valor){ $this->$propriedade = $valor; } } ?>
<?php // Criação da classe contabilista class Contabilista extends Funcionario { private $CRC; public function __costruct($nome,$datanasc,$identificacao,$salario, $CRC){ parent::__costruct($nome,$datanasc,$identificacao,$salario); } public function __get($valor){ return $this->$valor; } public function __set($propriedade,$valor){ $this->$propriedade = $valor; } } ?>
<?php // Criação da classe programador class Programador extends Funcionario { private $lingprog; public function __costruct($nome,$datanasc,$identificacao, $salario,$lingprog){ parent::__costruct($nome,$datanasc,$identificacao, $salario); } public function __get($valor){ return $this->$valor; } public function __set($propriedade,$valor){ $this->$propriedade = $valor; } } ?>
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\"> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /> <title>Untitled Document</title> </head> <?php // Criação da página index include(\"Funcionario.class.php\"); include(\"Contabilista.class.php\"); include(\"Programador.class.php\"); $objpessfis = new Contabilista(); $objpessfis->nome = \"Carlos Buta\"; $objpessfis->datanasc = \"15 de Junho de 1987\"; $objpessfis->identificacao = \"002025701LA036\"; $objpessfis->salario = 2090; echo \"<h2>Dados da Pessoa Física</h2>\"; echo \"Nome: \".$objpessfis->nome; echo \" \"; echo \"Data de Nascimento: \".$objpessfis->datanasc; echo \" \"; echo \"BI: \".$objpessfis->identificacao; echo \" \"; $objempresa = new Programador(); $objempresa->nome = \"Anacleto Bunga\"; $objempresa->datanasc = \"01 de Dezembro de 2004\"; $objempresa->identificacao = \"003215410LA021\"; $objempresa-> salario = 3560; $objempresa-> lingprog = \"PHP\"; echo \"<h2>Dados do Programador</h2>\"; echo \"Nome: \".$objempresa->nome; echo \" \"; echo \"Data de Nascimento: \".$objempresa->datanasc; echo \" \"; echo \"BI: \".$objempresa->identificacao; echo \" \"; echo \"Salário: \".$objempresa->salario; echo \" \"; echo \"Linguagem de Programação: \".$objempresa-> lingprog; ?> <body> </body> </html>
Anacleto Linux
Curtir tópico
+ 0
Responder
Posts
22/08/2016
Anacleto Linux
Há algo que não perguntei lá em cima: Com relação ao construtor das classes filhas é possível trabalhar assim ou tem outra forma melhor?
Obrigado a todos.
Obrigado a todos.
Responder
Clique aqui para fazer login e interagir na Comunidade :)