Trabalhando com métodos mágicos __Get e Set em PHP
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
Curtidas 0
Respostas
Anacleto Linux
21/08/2016
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.
GOSTEI 0