<?php
class Cliente {
private $nome;
public function __construct($nome) {
$this->nome = $nome;
}
public function getNome() {
return $this->nome;
}
public function __toString() {
return $this->nome;
}
}
abstract class Animal {
protected $nome;
protected $dono;
public function __construct($nome, $dono) {
$this->nome = $nome;
$this->dono = $dono;
}
public function getDono() {
return $this->dono;
}
}
class Cachorro extends Animal {
public function __construct($nome, $dono) {
parent::__construct($nome, $dono);
}
}
$ana = new Cliente('ana');
$dog = new Cachorro('Rex', $ana);
echo "Dono: " . $dog->getDono();
echo "\nNome do dono: " . $dog->getDono()->getNome();
//https://pt.stackoverflow.com/q/45371/101
PD9waHAKY2xhc3MgQ2xpZW50ZSB7CiAgICBwcml2YXRlICRub21lOwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRub21lKSB7CiAgICAgICAgJHRoaXMtPm5vbWUgPSAkbm9tZTsKICAgIH0KCXB1YmxpYyBmdW5jdGlvbiBnZXROb21lKCkgewogICAgICAgIHJldHVybiAkdGhpcy0+bm9tZTsKICAgIH0KCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJICAgIHJldHVybiAkdGhpcy0+bm9tZTsKCX0KfQoKYWJzdHJhY3QgY2xhc3MgQW5pbWFsIHsKICAgIHByb3RlY3RlZCAkbm9tZTsKICAgIHByb3RlY3RlZCAkZG9ubzsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbm9tZSwgJGRvbm8pIHsKICAgICAgICR0aGlzLT5ub21lID0gJG5vbWU7CiAgICAgICAkdGhpcy0+ZG9ubyA9ICRkb25vOwogICB9CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RG9ubygpIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRvbm87CiAgICB9Cn0KCmNsYXNzIENhY2hvcnJvIGV4dGVuZHMgQW5pbWFsIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbm9tZSwgJGRvbm8pIHsKICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG5vbWUsICRkb25vKTsKICAgfQp9CgokYW5hID0gbmV3IENsaWVudGUoJ2FuYScpOwokZG9nID0gbmV3IENhY2hvcnJvKCdSZXgnLCAkYW5hKTsKZWNobyAiRG9ubzogIiAuICRkb2ctPmdldERvbm8oKTsKZWNobyAiXG5Ob21lIGRvIGRvbm86ICIgLiAkZG9nLT5nZXREb25vKCktPmdldE5vbWUoKTsKCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9xLzQ1MzcxLzEwMQ==