wie methode eines objekts in objekt ansprechen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • wie methode eines objekts in objekt ansprechen?

    PHP-Code:
    class clA
    {
      public function 
    setX($X)
      {...}
    }

    class 
    clB
    {
      private 
    $A;

      public function 
    __construct()
      {
         
    $A = new clA();
      }

      public 
    getA()
      {
        return 
    $this->A;
      }
    }

    $objB = new clB();

    $objB->getA()->setX(0); 
    ich denke, es ist klar, was ich vorhabe. leider klappt das nicht:
    Fatal error: Call to a member function setA() on a non-object in...

    könnt ihr mir weiterhelfen?

    ps: PHP5

  • #2
    PHP-Code:
      public function __construct()
      {
         
    $A = new clA();
      } 
    ändern zu
    PHP-Code:
      public function __construct()
      {
         
    $this->= new clA();
      } 
    ich glaube

    Kommentar


    • #3
      das ging aber schnell, und es funktioniert auch noch - danke!

      Kommentar


      • #4
        Warum das so sein muss hast du aber verstanden, oder?
        ich glaube

        Kommentar


        • #5
          jupp, weil klassenelemente innerhalb der klasse mit $this-> angesprochen werden MÜSSEN. bei c++ is das halt anders, da KÖNNEN...

          Kommentar


          • #6
            aber ich muss zugeben, ich bin mir noch nicht sicher, ob getA() mir nun eine kopie oder doch eine referenz zurück gibt. da gibts doch unterschiede bei PHP4/5??
            vielleicht kann mal jemand licht ins dunkle bringen, und mir evtl. sagen, wie ich sicher stellen kann, dass ich eine referenz bekomme

            Kommentar


            • #7
              Original geschrieben von dr_rimmel
              aber ich muss zugeben, ich bin mir noch nicht sicher, ob getA() mir nun eine kopie oder doch eine referenz zurück gibt. da gibts doch unterschiede bei PHP4/5??
              vielleicht kann mal jemand licht ins dunkle bringen, und mir evtl. sagen, wie ich sicher stellen kann, dass ich eine referenz bekomme
              bei php4 gibt es keine 'public und private'
              bei php5 bekommst du automatisch die referencen. wenn du copy brauchst, dann muss du die methode __clone verwenden.

              mach in clA
              public function getX(){return $this->x;}

              und dann
              $objB->getA()->setX(5);
              echo $objB->getA()->getX();//beweis, dass es um reference handelt
              Zuletzt geändert von Slava; 04.09.2007, 16:26.
              Slava
              bituniverse.com

              Kommentar

              Lädt...
              X