Zugriff Auf ein Objekt
Jan K.
- php
0 zaphod19840 zaphod19840 Tom0 Jan k.0 zaphod1984
0 Ver2felt0 Ver2felt
Hallo zusammen,
in Typo3 gibt es ein Array $GLOBALS. Dort sind viele Arrays und Objekte abgelegt.
Ich will z.B. den Wert in "session_table" auslesen.
Das funktioniert aber nicht auf klassischem Wege mit -
print_r($GLOBALS["T3_VAR"]["makeInstanceService"]["tx_sv_auth"]["pObj"]);
Also habe ich probiert auf das Objekt mit dem Pfeiloperator zu zugreifen -
print_r($this->tx_sv_auth->pObj->session_table);
-
was leider kein Ergebnis liefert.
Hier noch der gesamte Code, inklusive abfrage ob "$this->tx_sv_auth" ein Onjekt ist - mit negativem Ergebnis.
echo '<pre>';
print_r($this->tx_sv_auth->pObj->session_table);
if( is_object($this->tx_sv_auth) ) {echo"<br>Ist ein Objekt";}
else{echo"<br>Ist kein Objekt";}
echo "<hr>";
print_r($GLOBALS["T3_VAR"]["makeInstanceService"]["tx_sv_auth"]);
echo '</pre>';
Meine Frage ist also was mache ich falsch und wie komme ich in PHP an den Wert von [session_table] ran?
Grüße aus Berlin,
Jan
print_r($GLOBALS["T3_VAR"]["makeInstanceService"]["tx_sv_auth"]["pObj"]);
nachdem du nicht genügend code gepostet hast kann ich nur raten, aber ich würde mal behaupten dass du so zu deiner session_table kommst:
print_r($GLOBALS["T3_VAR"]["makeInstanceService"]["tx_sv_auth"]->session_table);
korrektur
print_r($GLOBALS["T3_VAR"]["makeInstanceService"]["tx_sv_auth"]["pObj"]->session_table);
Hello,
print_r($GLOBALS["T3_VAR"]["makeInstanceService"]["tx_sv_auth"]["pObj"]->session_table);
Wenn bereits tx\_sv\_auth ein Objekt ist, so wie es aus dem Screenshot hervorgeht, dann muss da auch schon mit Objektzeiger referenziert werden
ich rate also mal:
~~~php
print_r($GLOBALS["T3_VAR"]["makeInstanceService"]["tx_sv_auth"]->pObj->session_table);
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Besten Dank, funktioniert einwandfrei.
Wenn bereits tx_sv_auth ein Objekt ist, so wie es aus dem Screenshot hervorgeht, dann muss da auch schon mit Objektzeiger referenziert werden
Ah, mea culpa.
Hallo zusammen,
»»
Das funktioniert aber nicht auf klassischem Wege mit -
print_r($GLOBALS["T3_VAR"]["makeInstanceService"]["tx_sv_auth"]["pObj"]);
- da "tx_sv_auth" kein Arrayelement ist, sondern ein Objekt. ( Fatal error: Cannot use object of type tx_sv_auth as array )
Ja, weil diese Klasse nicht das ArrayAccess-Interface implementiert. Dann würde das klappen.
Hier noch der gesamte Code, inklusive abfrage ob "$this->tx_sv_auth" ein Onjekt ist - mit negativem Ergebnis.
Warum greifst du hier gar nicht auf das $GLOBALS-Array zurück, sondern auf deine eigene Klasse? Dieser Parameter ist doch in deiner Klasse ($this
) nicht gesetzt. Du musst zunächst das Objekt aus dem Array holen:
$txSvAuth = $GLOBALS['tx_sv_auth'];
Dann kannst du auf dessen Parameter "mit dem Pfeil" zugreifen. Hierbei helfen dir auch folgende Kapitel der PHP-Doku:
Klassen und Objekte - Die Grundlagen und Klassen und Objekte - Eigenschaften.
Gruß
Hallo nochmal,
ich habe deinen Code falsch interpretiert. Du hast ja nicht das $GLOBALS-Array ausgeben lassen, sondern den Wert von $GLOBALS["T3_VAR"]["makeInstanceService"]["tx_sv_auth"]. Dementsprechend musst du auch damit weiterarbeiten und nicht mit $GLOBALS['tx_sv_auth'].
Gruß