Herança
Uma classe pode herdar atributos ou métodos de uma outra classe. Acrescenta-se após o nome da classe a palavra reservada extends seguida do nome da classe da classe da qual esta var herdar atributos e métodos. A classe que cede os atributos e métodos é chamada de superclasse e a classe que herdar os atributos e métodos recebe o nome de subclasse.A subclasse pode utilizar os atributos e métodos existentes na superclasse, sobrescrever os métodos da superclasse ou criar outros atributos ou métodos.
O PHP procura primeiramente o método na subclasse. Caso o método não exista, ele será procurado na superclasse. Como toda regra existe sua exceção, os métodos definidos com a palavra reservada final, indicando que as subclasses não podem sobrescrever estes métodos, mas veremos isso somente mais a frente.
Para acessar os atributos e métodos da subclasse, devemos utilizar a palavra reservada parent seguida de :: (dois pontos) exemplo: parent::setNome()
Como exemplo vamos criar a classe pai ou superclasse chamada pessoa, arquivo pessoa.php
<?php /** * Description of pessoa * * @author aluno */ class pessoa { //atributos protected $id; protected $nome; protected $endereco; //métodos function __construct($id, $nome, $endereco) { $this->setId($id); $this->setNome($nome); $this->setEndereco($endereco); } public function __destruct() { echo "ID: " . $this->getId(); echo "Nome: " . $this->getNome(); echo "Endereço: " . $this->getEndereco(); } public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getNome() { return $this->nome; } public function setNome($nome) { $this->nome = $nome; } public function getEndereco() { return $this->endereco; } public function setEndereco($endereco) { $this->endereco = $endereco;
} } ?>Depois criamos a classe filha ou subclasse chamada aluno, aluno.php.
<?php /** * Description of aluno * * @author aluno */ include 'pessoa.php'; class aluno extends pessoa { //atributos protected $rm; protected $serie; protected $turma; //métodos public function __construct($id, $nome, $endereco, $rm, $serie, $turma) { parent::__construct($id, $nome, $endereco); $this->setRm($rm); $this->setSerie($serie); $this->setTurma($turma); } public function __destruct() { parent::__destruct(); echo "RM: " . $this->getRm(); echo "Série: " . $this->getSerie(); echo "Turma: " . $this->getTurma(); } public function getRm() { return $this->rm; } public function setRm($rm) { $this->rm = $rm; } public function getSerie() { return $this->serie; } public function setSerie($serie) { $this->serie = $serie; } public function getTurma() { return $this->turma; } public function setTurma($turma) { $this->turma = $turma; } } ?>E por último o formulário, arquivo cadastro.php
<?php include 'aluno.php'; ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Cadastro</title> <style type="text/css"> label {display: block;} </style> </head> <body> <form name="fcadastro" action="<?php echo $_SERVER['PHP_SELF'];?>" method="get"> <label for="id">ID </label> <input name="id" type="text" maxlength="5" size="5"/><br> <label for="nome">Nome </label> <input name="nome" type="text" maxlength="50" size="50"/><br> <label for="endereco">Endereço </label> <input name="endereco" type="text" maxlength="50" size="50"/><br> <label for="rm">RM </label> <input name="rm" type="text" maxlength="5" size="5"/><br> <label for="serie">Série </label> <input name="serie" type="text" maxlength="10" size="10"/><br> <label for="turma">Turma </label> <input name="turma" type="text" maxlength="1" size="1"/><br> <input value="Salvar" type="submit"/> </form> <?php // put your code here if(!empty($_GET)) { $id = $_GET['id']; $n = $_GET['nome']; $e = $_GET['endereco']; $rm = $_GET['rm']; $s = $_GET['serie']; $t = $_GET['turma']; $aluno = new aluno($id, $n, $e, $rm, $s, $t); } ?> </body> </html>
Segue vídeoaula abaixo...
Até a próxima!