Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich in älteren PHP-Versionen (vor 5.5) auf geschützte Objekteigenschaften zugreifen?

Wie kann ich in älteren PHP-Versionen (vor 5.5) auf geschützte Objekteigenschaften zugreifen?

DDD
DDDOriginal
2024-12-05 16:15:14269Durchsuche

How Can I Access Protected Object Properties in Older PHP Versions (Pre-5.5)?

Zugriff auf geschützte Objekteigenschaften in PHP

Die objektorientierte Programmierung von PHP bietet drei Zugriffsmodifikatoren: öffentlich, geschützt und privat. Allerdings kann es bei der Arbeit mit bestimmten Objekten frustrierend sein, dass nicht direkt auf geschützte Eigenschaften zugegriffen werden kann. In diesem Artikel wird eine Lösung zum Abrufen geschützter Eigenschaften in PHP-Versionen vor 5.5 untersucht.

ReflectionClass zur Rettung

Vor PHP 5.5 bot die ReflectionClass-Klasse eine Methode dazu Zugriff auf geschützte Eigenschaften. Die folgende Funktion zeigt, wie:

function accessProtected($obj, $prop) {
  $reflection = new ReflectionClass($obj);
  $property = $reflection->getProperty($prop);
  $property->setAccessible(true);
  return $property->getValue($obj);
}

Mit dieser Funktion können Sie auf geschützte Eigenschaften zugreifen, indem Sie das Objekt und den Eigenschaftsnamen als Argumente übergeben. Nehmen wir zum Beispiel das Objekt in Ihrem Beispiel:

$value = accessProtected($obj, '_value');

Diese Methode ruft effektiv die geschützte _value-Eigenschaft ab und speichert sie in der $value-Variable.

Hinweis für PHP 5.2 .17

Während die ReflectionClass-Lösung in Ihrer lokalen Umgebung effektiv war, ist sie möglicherweise nicht auf Servern verfügbar, auf denen die PHP-Version ausgeführt wird 5.2.17. Leider gibt es in solchen PHP-Versionen keine alternative Methode für den Zugriff auf geschützte Eigenschaften.

Das obige ist der detaillierte Inhalt vonWie kann ich in älteren PHP-Versionen (vor 5.5) auf geschützte Objekteigenschaften zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn