mAX: OOP Anfängerproblem

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

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

    --
    bythewaythewebsuxgoofflineandenjoytheday
  2. 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

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

      --
      <img src="http://www.dmp-web.de/comunicout/neubauten.gif" border="0" alt="">
  3. 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

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