Ich verwende eine Vorlagen-Engine, die Code an der gewünschten Stelle in meine Site einfügt.
Ich habe eine Funktion geschrieben, um auf etwas zu testen, das ziemlich einfach ist:
myfunction() { return '($this->data["a"]["b"] ? true : false)'; }
Das Problem ist, dass $ this-> Daten privat sind und ich nicht überall darauf zugreifen kann. Daher muss ich getData () verwenden. was mein Problem verursacht.
$this->getData()['a']['b']
funktioniert nicht und das erstmalige Zuweisen des Werts funktioniert auch nicht, da er direkt in einem if () -Block verwendet wird.
Irgendwelche Ideen?
myfunction()
weiter verarbeitet? Dieser Teil fehlt in Ihrer Frage.Antworten:
Seit PHP 5.4 ist genau das möglich:
Referenz: https://secure.php.net/manual/en/language.types.array.php#example-62
Unter PHP 5.3 oder früher müssen Sie eine temporäre Variable verwenden.
quelle
PHP 5.4.11-1~precise+1
und diese Funktion funktioniert nicht! Erhaltene Nachricht als AntwortParse error: syntax error, unexpected '['
Sie können so etwas nicht verwenden:
Das heißt, die Array-Zugriffssyntax ist nicht direkt bei einem Funktionsaufruf möglich.
Sie müssen eine temporäre Variable wie diese verwenden:
In Ihrem Fall bedeutet dies wahrscheinlich, dass Sie Folgendes verwenden:
Sie müssen :
getData()
Methode auf und speichern Sie den Rückgabewert in einer temporären VaribaleSie haben nicht viel Auswahl, eigentlich ...
quelle
Ok ... anscheinend gibt es wirklich keinen besseren Weg, also werde ich mir mit einer nicht so schönen Lösung antworten:
Ich habe die Funktion erstellt:
Und benutzte es so:
Das ist nicht schön, funktioniert aber.
quelle
$this
->data
ist immer zugänglich, wenn es geschützt ist. ist nicht von überall zugänglich. Wenn Sie also Ihren Code zurückgeben und dieser als solcher ausgewertet wird, sollte er in Ordnung sein.$object
->data
$this
Übrigens gibt es einen Fehler in Ihrem Code: Die Anführungszeichen müssen maskiert werden.
quelle
Es ist ab PHP Version 5.4 möglich.
Wenn Sie nicht über eine temporäre Variable wollen dafür und Ihre PHP - Version ist weniger als 5,4 , als Sie noch ein paar eingebauten Funktionen verwenden können , das erste oder das letzte Element zu erhalten:
Edit: !!! Bitte beachten Sie, dass PHP in späteren Versionen (5.4+) einen Hinweis auslöst, da end nur Variablen als Parameter erwartet.
quelle