Interface

<< Click to Display Table of Contents >>

Navigation:  Objetos >

Interface

Previous pageReturn to chapter overviewNext page

 

Principal.php

 

require __DIR__ . '/classes/autoload.php';
 
// cria objetos que implementam interface Pessoa
$cliente = new classes\model\Cliente("Junior""a@com.br");
$fornecedor = new classes\model\Fornecedor("Maria");
 
// metodos comuns
$cliente->falar();
$fornecedor->falar();
 
// cada um chama seu método
$cliente->gritar();
$fornecedor->sussurando();
 
// podemos receber uma interface nessa funcao
function fazerFalar(classes\model\Pessoa $p) {
    // chamamos o metodo sem saber qual é a classe (cliente ou fornecedor)
    $p->falar();
};
 
// funciona para ambos
fazerFalar($cliente);
fazerFalar($fornecedor);

 

Saida

 

Junior está falando

Maria está falando

Junior está gritando

Maria está sussurrando

Junior está falando

Maria está falando

 

Pessoa.php

 

namespace classes\model;
 
interface Pessoa {
    public function __construct($nome$email = null);
    public function falar();
}

 

Cliente.php

 

namespace classes\model;
 
class Cliente implements Pessoa {
 
    protected $nome;
    protected $email;
 
    public function __construct($nome$email = null) {
        $this->nome = $nome;
        $this->email = $email;
    }
 
    public function falar() {
        echo "<p>{$this->nome} está falando</p>";
    }
 
    public function gritar() {
        echo "<p>{$this->nome} está gritando</p>";
    }    
}

 

Fornecedor.php

 

namespace classes\model;
 
class Fornecedor implements Pessoa {
 
    protected $nome;
 
    public function __construct($nome$email = null) {
        $this->nome = $nome;
    }
 
    public function falar() {
        echo "<p>{$this->nome} está falando</p>";
    }
 
    public function sussurando() {
        echo "<p>{$this->nome} está sussurrando</p>";
    }    
}