Heranca

<< Click to Display Table of Contents >>

Navigation:  Objetos >

Heranca

Previous pageReturn to chapter overviewNext page

 

Principal.php

 

require __DIR__ . '/classes/autoload.php';
 
$pessoa = new classes\model\Pessoa("Junior""RG"new DateTime("1977-07-02"));
 
// cria as filhas de "Pessoa":
$cliente = new classes\model\Cliente("Junior""RG"new DateTime("1977-07-02"));
$fornecedor = new classes\model\Fornecedor("Junior""RG"new DateTime("1977-07-02"), "48 9999-2222");
 
var_dump($pessoa$cliente$fornecedor);
 
// cada um chama seu método
echo $pessoa->getDescricao()."<br>";
echo $cliente->getDescricao()."<br>";
echo $fornecedor->getDescricao()."<br>";

 

SAIDA

object(classes\model\Pessoa)[2]
  private 'nome' => string 'Junior' (length=6)
  private 'doc' => string 'RG' (length=2)
  private 'data' =>
    object(DateTime)[3]
      public 'date' => string '1977-07-02 00:00:00.000000' (length=26)
      public 'timezone_type' => int 3
      public 'timezone' => string 'America/Sao_Paulo' (length=17)
 
object(classes\model\Cliente)[4]
  private 'nome' (classes\model\Pessoa) => string 'Junior' (length=6)
  private 'doc' (classes\model\Pessoa) => string 'RG' (length=2)
  private 'data' (classes\model\Pessoa) =>
    object(DateTime)[5]
      public 'date' => string '1977-07-02 00:00:00.000000' (length=26)
      public 'timezone_type' => int 3
      public 'timezone' => string 'America/Sao_Paulo' (length=17)
 
object(classes\model\Fornecedor)[6]
  private 'fone' => string '48 9999-2222' (length=12)
  private 'nome' (classes\model\Pessoa) => string 'Junior' (length=6)
  private 'doc' (classes\model\Pessoa) => string 'RG' (length=2)
  private 'data' (classes\model\Pessoa) =>
    object(DateTime)[7]
      public 'date' => string '1977-07-02 00:00:00.000000' (length=26)
      public 'timezone_type' => int 3
      public 'timezone' => string 'America/Sao_Paulo' (length=17)

 

Junior, documento: RG em Sat-Jul-1977

CLIENTE Junior, documento: RG em Sat-Jul-1977

FORNECEDOR: Junior, documento: RG em Sat-Jul-1977 FONE: 48 9999-2222
 

Pessoa.php

 
namespace classes\model;
 
class Pessoa {
    private $nome;
    private $doc;
    private $data;
    
    // a "\" é pq a classe é default do php e não faz parte do namespace
    public function __construct($nome$doc\DateTime $data) {
        $this->nome = $nome;
        $this->doc = $doc;
        $this->data = $data;
    }
    
    public function getData(): \DateTime {
        return $this->data;
    }
    
    public function getDescricao() {
        return $this->nome.", documento: ".$this->doc." em ".$this->data->format("D-M-Y");
    }
}

 

Cliente.php

 
namespace classes\model;
 
class Cliente extends Pessoa {
    
    public function __construct($nome$doc\DateTime $data) {
        // executa o construtor do "pai"
        parent::__construct($nome$doc$data);
    }
    
    public function getDescricao() {
        // retorna a descricao do "pai"
        return "CLIENTE ".parent::getDescricao();
    }
}
 

Fornecedor.php

 
namespace classes\model;
 
class Fornecedor extends Pessoa {
 
    private $fone;
    
    public function __construct($nome$doc\DateTime $data$fone) {
        // executa o construtor do "pai"
        parent::__construct($nome$doc$data);
        $this->fone = $fone;
    }
    
    public function getDescricao() {
        // retorna a descricao do "pai"
        return "FORNECEDOR: ".parent::getDescricao()." FONE: ".$this->fone;
    }
}