Dynamischer Objektaufruf

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

  • Dynamischer Objektaufruf

    Hallo liebe Community,
    mein Problem dreht sich um folgenden stark vereinfachten Code
    PHP-Code:
    print_r($replacesArray['beispielklasse']->bla['foo2']); // Liefert das gewünschte Ergebnis zurück

    $klassenName "beispielklasse";
    $objectOhneAnfang "bla['foo2']";
    print_r($replacesArray[$klassenName]->$objectOhneAnfang);  // Liefert : Notice:  Undefined property: BeispielClass::$bla['foo2'] 
    Wieso liefert die dynamische Variante den Hinweis? Nach meiner Logik nach, müsste dies funktionieren, insbesonders da
    PHP-Code:
    print_r($replacesArray['beispielklasse']->bla); 
    Mir das gesamte Array ausgibt. Für jegliche Hilfe wäre ich überaus Dankbar!

    Es grüßt
    Mr. Blupp

  • #2
    Zitat von MrBlupp Beitrag anzeigen
    Wieso liefert die dynamische Variante den Hinweis?
    Weil du versuchst, auf eine Eigenschaft zuzugreifen, deren Name bla['foo2'] lautet.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo wahsaga!
      Das mache ich ja auch mit dem direkten Aufruf über [COLOR=#000000][/COLOR] $replacesArray['beispielklasse']->bla['foo2'] womit es funktioniert. Nur sobald ich bla['foo2'] über eine Variabel definiere, um es dynamisch aufzurufen, erscheint der Hinweis und ich komm nicht mehr an das Ergebnis heran.
      Ist mein Vorhabe so nicht möglich oder mache ich generell etwas falsch?

      Gruß
      Mr. Blupp

      Kommentar


      • #4
        PHP-Code:
        $property 'bla';
        $key 'foo2';

        echo 
        $object->$property[$key]; 

        Kommentar


        • #5
          Hallo h3ll!
          Auch dir Danke für deine Antwort!

          Wenn ich es mit deinem Vorschlag versuche, erhalte ich ebenfalls die Meldung "Notice: Undefined property: BeispielClass::$b". oO
          Es ist mittlerweile zum verrückt werden

          Frohes Fest wünscht,
          Mr. Blupp

          Kommentar


          • #6
            Ich habe mir den Thread jetzt ein paar mal durchgelesen und laut und deutlich "Bahnhof" vernommen.

            Sage doch einerseits mal "wozu" das gut sein soll und liefere doch bitte testbaren Code. Ein mini Beispiel.
            Wir werden alle sterben

            Kommentar


            • #7
              Zitat von MrBlupp Beitrag anzeigen
              Wenn ich es mit deinem Vorschlag versuche, erhalte ich ebenfalls die Meldung "Notice: Undefined property: BeispielClass::$b". oO
              Es ist mittlerweile zum verrückt werden
              Tja, dann gibts das Property $b offenbar nicht.

              Kommentar


              • #8
                Ja h3ll...
                Das dies anscheinend so ist, versteh ich selbst. Ich verstehe nur nicht wieso. Der Direktaufruf funktioniert, aber sobald ich die Parameter in Variabeln packe, dann klappt es nicht mehr.

                @combie
                Sorry für die "Bahnhofslektüre" meinerseits. Das ganze sollte eigentlich ein Fun Templatesystem werden (Hatte Langeweile und wollte mal etwas für mich neues machen, mittlerweile find ich die Problemlösung jedoch weitaus interessanter als alles andere ^^).

                Hier der gewünschte Beispielcode (Selbes Schema, aber stark verkürzt und mit demselben Problem :P)

                PHP-Code:
                <?php
                error_reporting
                (E_ALL);
                class 
                BeispielClass {
                    public function 
                __construct() {
                        
                $this->bla = array('foo2' => "Objekt Nummer 1"'foo3' => "Objekt Nummer 2");
                        return 
                $this->bla;
                    }
                }

                $replacesArray = array('test1' => "Blupp"'test2' => new BeispielClass());
                $a 'test2';
                $b 'bla';
                $c 'foo2';
                print_r($replacesArray[$a]->$b[$c]); // Liefert den Fehler
                print_r($replacesArray['test2']->bla['foo2']); // Liefert das gewünschte Ergebnis zurück
                ?>

                Kommentar


                • #9
                  PHP-Code:
                  print_r($replacesArray[$a]->{$b}[$c]); // Tuts perfekt 
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    Weißt du, dass du mir mein Weihnachten gerettet hast?
                    Danke dir! Allein wär ich da in 5 WOchen nicht drauf gekommen, denn das man an der Stelle die geschweiften Klammern setzen kann, ist mir regelrecht neu oO

                    Thx und ein schönes Fest!

                    Kommentar


                    • #11
                      Was bezweckst du mit dem return im Konstruktor?

                      Kommentar

                      Lädt...
                      X