GABARITO Exercícios de Fixação – Métodos Mágicos Questão 1-) Classe: Representação lógica de uma entidade. Objeto: Uma coerência específica da classe. Atributos: Características da classe. Métodos: Ações que a classe exerce. Questão 2-) Está correto, pois o “DRY” significa “Dont't repeat yourself”. Questão 3-) Está errado, pois é uma abstração. Questão 4-) class assassina{ private $motivo; public function setMotivo($m){ $this->motivo = $m; } public function getMotivo(){ return $this->motivo; } } Questão 5-) class Dinossauro{ private $especie public function __ construct ($especie){ this->especie=$especie; } $dino = new Dinossauro('Trex'); $dino2 = new Dinossauro('Rosa'); } Questão 6-) class Dinossauro{ private $especie public function __ construct ($especie){ this->especie=$especie; } $dino = new Dinossauro('Trex'); $dino2 = new Dinossauro('Rosa'); } Questão 7-) Métodos mágicos em PHP são invocados quando trabalhamos com as propriedades e métodos de um objeto (instância de uma classe). Exemplo #1 class minhaClasse { public function __construct (){ echo "Acabamos de criar um objeto"; } } Exemplo #2 class minhaClasse { public function __construct (){ echo "Acabamos de criar um objeto"; } public function __destruct (){ echo "Nosso objeto foi destruído"; } } Exemplo #3 class Pessoa { // O método __invoke() é chamado quando um script tenta chamar um objeto como uma função. public function __invoke(){ return true; } } // Instância $pessoa = new Pessoa; // Tenta usar como função if ( $pessoa() ) { echo 'OK'; } Exemplo #4 class Pessoa { public function __toString() { return 'Isso é um objeto amigo.'; } } // Pessoa $pessoa = new Pessoa(); // Exibe: Isso é um objeto amigo echo $pessoa; Exemplo #5 class Pessoa { // Propriedades privadas private $nome = "Luiz"; private $idade = 22; // __get é invocado quando tentamos acessar uma propriedade protegida ou privada function __get( $propriedade ) { return 'Propriedade privada: $this->' . $propriedade . ' = ' . $this->$propriedade; } } // Pessoa $pessoa = new Pessoa(); // Consigo acessar a propriedade privada por conta do método __get echo $pessoa->nome; // Propriedade privada: $this->nome = Luiz Questão 8-) Quando um método é chamado dentro de um contexto de objeto. Exemplo: class exemplo{ public $nome; public $sobrenome; public $nomecompleto; $this->nomecompleto = $this->nome." ".$this->sobrenome; } Questão 9-) class carro { private $velocidade; private $combustivel; public function setVelocidade($v){ $this->velocidade = $v; } public function getVelocidade(){ return $this->velocidade; } public function setCombustivel($c){ $this->combustivel = $c; } } Questão 10-) Os níveis são: Public (Público): Visível a todas as classes. Private (Privado): Visível apenas a classe pertencente. Protected (Protegido): Apenas a própria classe e as subclasses terão acesso.