<< Click to Display Table of Contents >> Interface |
![]() ![]() ![]() |
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
namespace classes\model;
interface Pessoa {
public function __construct($nome, $email = null);
public function falar();
}
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>";
}
}
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>";
}
}