Wie kann ich auf eine Klasseneigenschaft verweisen, wenn ich nur eine Zeichenfolge kenne?
class Foo
{
public $bar;
public function TestFoobar()
{
$this->foobar('bar');
}
public function foobar($string)
{
echo $this->$$string; //doesn't work
}
}
Was ist der richtige Weg, um die Zeichenfolge auszuwerten?
Sie müssen nur ein $ verwenden, wenn Sie mit einer String-Variablen auf die Mitgliedsvariable eines Objekts verweisen.
echo $this->$string;
Diese Syntax kann in php7(.1?)+ Herausforderungen haben, folgen Sie Ricks Antwort unten, damit sie dort richtig funktioniert.
– Jerod Venema
30. Dezember 2019 um 19:43 Uhr
Rick
Wenn Sie einen Eigenschaftswert verwenden möchten, um den Namen einer Eigenschaft zu erhalten, müssen Sie “{“-Klammern verwenden:
$this->{$this->myvar} = $value;
Auch wenn es sich um Objekte handelt, funktionieren sie:
$this->{$this->myobjname}->somemethod();
Erstaunlich, dass PHP diese Strukturen zulässt! Kann aber für andere auch recht vage sein
– melledijkstra
10. Februar 2017 um 18:31 Uhr
Es ist auch praktisch, wenn Sie Literale mit dynamischen Variablen kombinieren, z. B.: $this->{"my_prop_".$i}
– jave.web
21. August 2017 um 14:54 Uhr
Matthäus H.
Wie die anderen bereits erwähnt haben, sollte $this->$string ausreichen.
Dies jedoch
$this->$$string;
wird die Zeichenfolge tatsächlich auswerten und das Ergebnis davon erneut auswerten.
du warst ganz nah. Sie haben gerade 1 zusätzliches $-Zeichen hinzugefügt.
public function foobar($string)
{
echo $this->$string; //will work
}
echo $this->$string; //should work
Du brauchst nur $$string beim Zugriff auf eine lokale Variable, deren Name nur in einer Zeichenfolge gespeichert ist. Da greift man normalerweise in einer Klasse gerne zu $obj->propertySie müssen nur einen hinzufügen $.
Samson
Um sich an die genaue Syntax zu erinnern, denken Sie daran, dass Sie a verwenden $ mehr als Sie normalerweise verwenden. Wie Sie verwenden $object->property um auf eine Objekteigenschaft zuzugreifen, dann ist der dynamische Zugriff erledigt $object->$property_name.
10149100cookie-checkdynamische Klasseneigenschaft $$value in phpyes