Überladen des Klassenkonstruktors innerhalb von Merkmalen in PHP> = 5.4
In PHP 5 kann ich Konstruktoren (und andere Methoden) überladen. Aber wenn ich so einen Code bekomme:
class Base {
public function __construct($a, $b) {
echo $a+$b;
}
public function sayHello() {
echo 'Hello ';
}
}
trait SayWorld {
public function __construct($a, $b, $c = 0) {
echo (int)$c * ($a+$b);
}
public function sayHello($a = null) {
parent::sayHello();
echo 'World!'.$a;
}
}
class MyHelloWorld extends Base {
use SayWorld;
}
$o = new MyHelloWorld(2, 3);
$o->sayHello(1);
Ich habe einen Fehler:
Schwerwiegender Fehler: MyHelloWorld hat kollidierende Konstruktordefinitionen, die von Merkmalen stammen
Wie kann ich das beheben? Sie können meinen Code testenHier.