OOP Anfängerproblem
mAX
- php
0 lulu0 Horst Fickenscher0 Z.N.S.
0 Horst0 mAX
Hi,
warum bekomme ich hier nicht "hallo" ausgegeben????
<?
class Foo {
var $query;
function Foo($query) {
$this->$query = $query;
}
function test() {
return $this->$query;
}
}
$foo1 = new Foo("hallo");
echo $foo1->test();
?>
ich raffs einfach net. wo ist der fehler?????
mfg
mAX
Huhu Max
warum bekomme ich hier nicht "hallo" ausgegeben????
Mich wundert viel mehr, dass Du da keine Fehlermeldung ausgegeben bekommst ...
$this->$query = $query;
Eines der drei $ ist hier überflüssig.
Ungünstig ist es ausserdem den gleichen Namen für die lokale Variable
der Funktion und die Objekt-Eigenschaft zu verwenden.
Viele Grüße
lulu
Hallo mAX,
warum bekomme ich hier nicht "hallo" ausgegeben????
Weil du den Übergabeparameter des Konstruktors blöderweise ebenfalls $query genannt hast. Das scheint PHP zu verwirren.
Die Änderung zu...
function Foo($q) {
$this->$query = $q;
}
...behebt den Fehler.
Lieben Gruß,
Horst
abend,
Hallo mAX,
warum bekomme ich hier nicht "hallo" ausgegeben????
Weil du den Übergabeparameter des Konstruktors blöderweise ebenfalls $query genannt hast. Das scheint PHP zu verwirren.
das ist doch der normalste weg... das wird PHP garantiert nicht verwirren.
function Foo($q) {
$this->$query = $q;
}
falsch. das $-zeichen in $query muss weg..
HIH
mfg,
(tanz das)
Z.N.S.
Hallo,
da hab ich ja sogar noch was übersehen:
$this->$query = $query;
müsste eigentlich "$this->query = $query;" heißen. Da war ein "$" zuviel.
Lieben Gruß,
Horst Fickenscher
Hallo,
danke erstmal, es lag nicht nur daran sondern auch an
return $this->$query;
was auch falsch ist. es muss
return $this->query;
lauten. dein tipp hat mich auf die richtige fährte gebracht....
gruß
mAX