Ich bin neu in OOP, also bitte nicht hart sein.Warum funktioniert das nicht? OOP Novize
Meine Aufgabe ist es, dass diese:
$color = new Color(127,0,0);
$rect = new Rectangle($color, 100, 50);
$rect->render();
auf die Seite bringen sollte den folgenden Code:
"div style="background-color:RGB(127,0,0);width:100px;height:50px"></div>"
Unten ist mein OOP-Code. Ziel war es, eine abstrakte Klasse Component
und eine abstrakte Methode render()
zu verwenden. Ich versuche, warum Code, um herauszufinden, funktioniert nicht:
class Color {
protected $red;
protected $green;
protected $blue;
public function __construct($red, $green, $blue) {
$this->red = $red;
$this->green = $green;
$this->blue = $blue;
}
}
abstract class Component {
protected $color;
protected $width;
protected $height;
public function __construct($color) {
$this->color = new Color();
}
abstract function render();
}
class Rectangle extends Component {
public function __construct($color, $width, $height){
parent::__construct();
$this->color = $color;
$this->width = $width;
$this->height = $height;
}
public function render() {
echo "<div style='background-color:RGB(" . $this->color . ");width:" . $this->width . "px;height:" . $this->height . "px'></div>";
}
}
$color = new Color(127,0,0);
$rect = new Rectangle($color, 100, 50);
echo $rect->render();
Sie müssen uns sagen (und verstehen, sich selbst!) * was * funktioniert nicht, bevor du zu * warum * gelangen kannst. Normalerweise führt dich der erste direkt zum zweiten. –
Was scheitert? Haben Sie Fehlermeldungen aktiviert? Wird die Seite nicht vollständig geladen? –
Warnung: Fehlendes Argument 1 für Component :: __ construct(), in/public_html/index.php in Zeile 26 aufgerufen und in/public_html/index.php in Zeile 18 definiert – Sorrybyenglish