Il problema che avevo era dato dal fatto che non usavo l'estensione di una classe ma implementavo una interfaccia.
Codice PHP:
interface Foo {
    public function 
test(Foo $t);
}

class 
Bar implements Foo {
    
//Questo non me lo accetta
    
public function test(Bar $t) {
        return (
parent::test($t)) && ($this->barVal == $t->barVal);
    }

Invece di un interfaccia utilizzo una classe astratta con implementazione del metodo test vuota, non so se va bene.