Veröffentlicht 12. August 201015 j Ich habe follgendes Beispiel aus einem Buch ausprobiert: <?php //function _autoload($class_name) { // require strtolower("inc/$class_name.php"); // } include 'circle.php'; include 'rectangle.php'; $circ = new circle(300); echo "Radius des Kreises: ".$circ->radius; $rect = new rectangle(300,400); echo "Breite des Rechtecks: ".$rectangle->width; echo "Umfang des Rechtecks: ".$rect->getPerimeter()."\n"; echo "Fleache des Kreises: ".$circ->getArea()."\n"; ?> [/PHP] Mit der auskommentierten Funktion funktionierte es überhaupt nicht. Ich bekamm dann immer die Meldung, 'circle' und 'rectangle' seien unbekannt. Also habe ich die beiden include-Anweisungen eingefügt. Datei circle.php: [PHP]<?php class circle { public $radius; public function _construct($r) { $this->radius = $r; } public function getArea() { return pow($this->radius,2)*pi(); } public function getPerimeter() { return 2*pi()*$this->radius; } } ?> Datei rectangle.php: <?php class rectangle { protected $width; protected $height; public function _construct($w,$h) { $this->width = $w; $this->height = $h; } public function getArea() { return $width*$height; } public function getPerimeter() { return 2*$width+2*$height; } } ?>[/PHP] Wenn ich jetzt das Programm im Browser aufrufe, steht dort: "Radius des Kreises: Breite des Rechtecks: Umfang des Rechtecks: 0 Fleache des Kreises: 0". Wieso übernimmt das Programm nicht die übergebenen Grüßen? Was muss ich ändern?
12. August 201015 j Hi, dir sind noch ein paar Fehler unterlaufen: cunstructor hat 2 _, also __cunstruct(), deshalb übernimmt er wahrscheinlich auch die werte nicht $rectangle->width; müsste $rect sein bei rectangel.php, tu nicht nur $width schreiben, sondern $this->width, ist aber glaub ich kein fehler an sich, aber das gehört meiner meinung nach zum sauberen programmieren. MfG Funfare
12. August 201015 j bei rectangel.php, tu nicht nur $width schreiben, sondern $this->width, ist aber glaub ich kein fehler an sich, aber das gehört meiner meinung nach zum sauberen programmieren. doch das ist falsch, es ist allerdings kein syntax error. $width und $height sind in den methoden undefiniert, in java, c++ und anderen ist das this nicht erforderlich, in php schon. class A { public $foo = 0; protected $bar = 35; public function __construct($foo) { $this->foo = $foo; $foo += 10; echo $this->foo . ' // '. $foo . ' // ' . $bar; } } $oA = new A(15); [/PHP]
12. August 201015 j Hi, cunstructor hat 2 _, also __cunstruct(), deshalb übernimmt er wahrscheinlich auch die werte nicht MfG Funfare Danke Dir! Mit den Strichen funktioniert es jetzt. Die Werte werden übernommen! Gruß, matse
12. August 201015 j doch das ist falsch, es ist allerdings kein syntax error. $width und $height sind in den methoden undefiniert, in java, c++ und anderen ist das this nicht erforderlich, in php schon. Danke für den Hinweis! Die Funktionen der Klasse rectangle funktionierten wirklich nicht ohne $this. Viele Grüße, matse
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.