Dynamischer Objektaufruf
Einklappen
X
-
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!
Einen Kommentar schreiben:
-
PHP-Code:print_r($replacesArray[$a]->{$b}[$c]); // Tuts perfekt
Einen Kommentar schreiben:
-
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
?>
Einen Kommentar schreiben:
-
Zitat von MrBlupp Beitrag anzeigenWenn ich es mit deinem Vorschlag versuche, erhalte ich ebenfalls die Meldung "Notice: Undefined property: BeispielClass::$b". oO
Es ist mittlerweile zum verrückt werden
Einen Kommentar schreiben:
-
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.
Einen Kommentar schreiben:
-
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
Einen Kommentar schreiben:
-
PHP-Code:$property = 'bla';
$key = 'foo2';
echo $object->$property[$key];
Einen Kommentar schreiben:
-
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
Einen Kommentar schreiben:
-
Zitat von MrBlupp Beitrag anzeigenWieso liefert die dynamische Variante den Hinweis?
Einen Kommentar schreiben:
-
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']
PHP-Code:print_r($replacesArray['beispielklasse']->bla);
Es grüßt
Mr. BluppStichworte: -
Einen Kommentar schreiben: