Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Werte der Elternklasse ändern

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Werte der Elternklasse ändern

    Hi Leute,

    Bin grad an Version 5.0 Beta meines CMS, was halt noch besser werden soll...

    Jetzt bin ich aber mal wieder auf ein Problem gestoßen, wozu ich und mein Kumpel keine Antwort zu wissen:

    Wir haben die Hauptklasse (stark vereinfacht):
    PHP-Code:
    <?php

    class iceWave{
        public 
    $userInfo = array();

        [...]

        private function 
    getUserInfo(){
            
    $i = new LOG($this);
            
    $i->getUserInfo(); 
        }

        private function 
    ini(){
            
    $this->getUserInfo();
        }
    }
    und dann noch die LOG-Klasse:
    PHP-Code:
    <?php

    CLASS LOG{
        private 
    $owner null;

        public function 
    LOG($owner){
            
    $this->owner $owner;
            
            echo 
    'Log loaded';
        }
        
        public function 
    getUserInfo(){
            
    $owner->userInfo['IP'] = '192.168.1.1';
        }
    }

    ?>
    Leider klappt das aber nicht, weil $owner ja nur eine Kopie von $iceWave ist...

    Kennt jemand eine Lösung, wie man beim Parent Variablen ändern könnte?

    Ich weiß, man könnte ja einfach das ganze mit Return machen, aber das ganze ist ja eine Schnittstelle, also wäre das auch nicht so Ideal...

    MfG. DjScaleo

  • #2
    Mal abgesehen davon, dass das ganze nicht gerade sinnvoll aussieht und ich weder deinen Code noch deine Sätze verstehe :
    In der Log-Klasse in getUserInfo solltest du eigentlich eine Notice bekommen, dass es $owner nicht gibt. Wahrscheinlich meintest du $this->owner. Dann klappts auch mit der Referenz.

    Wegen deiner etwas ... subobtimpalen Benamsung mach ich mir mal garkeine Gedanken was zur Hölle du da überhaupt basteln willst.

    Kommentar


    • #3
      Zitat von djscaleo Beitrag anzeigen
      Leider klappt das aber nicht, weil $owner ja nur eine Kopie von $iceWave ist...
      Humbug.

      Bitte beschäftige Dich mit der Funktionsweise des von Dir eingesetzten Attributmodifizierers "private".

      Und: Nimm doch einfach ne Methode dafür. Direkt in die Eigenschaften fremder Objekte schreibt man nicht. Es ist die Hölle, falls das später mal wer debuggen soll.

      Gruß Jens

      Kommentar


      • #4
        Ja es wird doch wohl irgendiwe möglich sein, auf die Elternklasse zuugreifen, oder?!?

        @ Jens Clasen: Sorry mit dem private, war ein fehler grad beim schreiben ins Forum^^



        Edit: naja wenns nicht anders geht, dann mach ichs halt weiterhin mit return...

        MfG. DjScaleo

        Kommentar

        Lädt...
        X