Ü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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage