Es gibt ein paar alternative Möglichkeiten, um private/geschützte Eigenschaften eines Objekts zu erhalten, die keine Änderung des ursprünglichen Quellcodes erfordern.
Option 1-Reflection:
Wikipedia definiert Reflexion als
... die Fähigkeit eines Computerprogramms zu untersuchen und die Struktur und das Verhalten (insbesondere die Werte, Meta-Daten zu ändern , Eigenschaften und Funktionen) des Programms zur Laufzeit. [Reflection (computer_programming)]
In diesem Fall Sie Reflektion verwenden möchten, um die Eigenschaften des Objekts und setzen als zugänglich geschütztes Eigentum _data
ich nicht empfehlen Reflexion zu untersuchen, wenn Sie sehr spezifische Anwendungsfälle, wo es kann erforderlich sein. Dies ist ein Beispiel, wie Sie Ihre privaten/geschützten Parameter mit Reflexion mit PHP zu bekommen:
$reflector = new \ReflectionClass($object);
$classProperty = $reflector->getProperty('_data');
$classProperty->setAccessible(true);
$data = $classProperty->getValue($object);
Option 2 - Subklassen (geschützte Eigenschaften only):
Wenn die Klasse nicht final, können Sie Erstellen Sie eine Unterklasse des Originals. Dadurch erhalten Sie Zugriff auf die geschützten Eigenschaften. In der Unterklasse könnten Sie Ihre eigenen Getter-Methoden schreiben:
Hoffe, das hilft.
Wenn der Wert geschützt ist, dann gibt es einen ganz guten Grund, „warum“. –
Nun, ich habe das gleiche Problem konfrontiert Quickbook api :) –