Что значит передача интерфейса в качестве параметра?
что то вроде этого... если интерфейс в параметре, то мы можем туда передать любой  экземпляр класса имплементирующий указанный интерфейс.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 ());
    }
}
Метод сохраняет модель, то есть объект класса реализующего интерфейс ModelInterface. При этом срабатывают определённые события (model.save.before и model.save.after), обработчикам которых может потребоваться доступ к сохраняемому объекту ($model). Этот доступ можно получить через расшариваемый объект класса ModelEvent, который внутри себя и содержит объект $model.