Klassen
-
Hallo Leute, wieso funktioniert folgender Code nicht ? Das ist doch das einmal eins der Objektorientierung ?
class Test{
var $v1;function getTest(){
return $this;
}
}test->v1 = 5;
echo $test->getTest()->v1;P.S.
Bitte schreibt keine Post, dass dies Sinnlos ist und das man genausogut echo $test->v1 schreiben könnte:
Mir geht es hier nur ums Prinzip !
-
echo $test->getTest()->v1;
???
was willst du damit sagen?
-
kA, aber probier's mal mit {}, also so:
echo {test->getTest()}->v1; oder zur not eben: temp = temp->v1;
Aber das willst du wohl auch net
-
ich hoffe mal schwer dass das nicht geht.
das ist nämlich das einmal eins der OOP dass das nicht geht.
stichwort: member sind private
-
Auf php.net hab ich folgendes bei den User-Beiträgen gefunden:
// Similarly for objects, cannot do:
$foo = $test->childTest()->blah();// Instead have to do:
$temp = foo = $temp->blah();Also musst du meinen 2. Lösungsvorschlag nehmen (oder es ganz anders machen )
-
THX FLENDERS, du bist echt die beste.
-
wieso die?
-
uuuuups, ich dachte du wärst Flenders seine Frau.
-
ach, heißt seine Frau so?! Ich schaue nie die Simpsons
-
@elise
Was meinst du mit mit: "Was willst du damit sagen ?"
Ich versuche eine direkte dereferenzierenung des Object - Pointers zu machen, wie es in jeder anderen mir bekannten Sprache wie Java, Javascript, C++, Delphi usw. möglich ist...Bsp. C++
class Rect{ public: float xPos,yPos,width,height; }; class Object{ private: Rect rc; public: Rect *getRect(void){ return &this->rc; } }; Object obj; obj.getRect()->xPos = 5; obj.getRect()->yPos = 10;
-
ich denke, wir müssen uns daran gewöhnen( auch im hinblick auf die objektorientierung in php5), daß alles über funktionen abgehandelt wird
(nur ein spiel, und achtung: eine klasse darf in php nicht object heißen, schlüsselwort ... )
<?php class Rect{ var $xPos=2; var $yPos=3; var $width=4; var $height=5; function Rect(){ $this->xPos=13; echo "konstruktor rc: ".$this->xPos."<br>"; } } class Test{ var $rc; function Test(){ $this->rc=&new Rect(); echo "konstruktor Test: ".$this->rc->xPos."<br>"; } function getRect(){ return get_class_vars(get_class($this->rc)); } } $test=new Rect(); $var_arr= get_class_vars(get_class($test)); foreach($var_arr as $key => $value) echo $key." -- ".$value."<br>"; $obj=&new Test(); $var_arr2=$obj->getRect(); foreach($var_arr2 as $key => $value) echo $key." -- ".$value."<br>"; ?>
ausgabe:
konstruktor rc: 13 xPos -- 2 yPos -- 3 width -- 4 height -- 5 konstruktor rc: 13 konstruktor Test: 13 xPos -- 2 yPos -- 3 width -- 4 height -- 5
ps: funktioniert nur bei standardwerten innerhalb der klasse, nicht durch initialisierung durch den konstruktor
<ediT> ausgabe noch angefügt</edit>[ Dieser Beitrag wurde am 07.02.2003 um 12:45 Uhr von elise editiert. ]