Ops, ho postato il codice sbagliato![]()
Quello che non va e reso un po' più semplice è così:
In pratica non posso fare l'override del metodo test.Codice PHP:
class Foo {
public $val;
public function test(Foo $t) {
return ($this->val == $t->val);
}
}
class Bar extends Foo {
public $barVal;
//Questo non me lo accetta
public function test(Bar $t) {
return (parent::test()) && ($this->barVal == $t->barVal);
}
}
//$f1 e $f2 di tipo Foo
$f1 = new Foo();
$f2 = new Foo();
$f1->test($f2);
//$b1 e $b2 di tipo Bar
$b1 = new Bar();
$b2 = new Bar();
$b1->test($b2);
//$f1 di tipo Foo e $b1 di tipo Bar
$f1->test($b1);
Il metodo test di Bar si aspetta un altro oggetto Bar come input perché in Foo non esiste la variabile $barVal.
Edit: corretto il codice

Rispondi quotando