что то вроде этого... если интерфейс в параметре, то мы можем туда передать
любой экземпляр класса имплементирующий указанный интерфейс.
interface Berry {
public function getSugar() {};
}
class Strawberries implements Berry {
public function getSugar() {
return 20;
}
}
class Watermelon implements Berry {
public function getSugar() {
return 50;
}
}
class Omnomnom() {
public function printBerrySugar(Berry $berry) {
return print($berry->getSugar());
}
public function test() {
$this->printBerrySugar(new Strawberries ());
$this->printBerrySugar(new Watermelon ());
}
}