Gibt es eine Möglichkeit in PHP (programmatisch, natürlich) zu sagen, ob eine bestimmte Klasse ist eine interne Klasse (wie DateTime
) oder eine Benutzerklasse (class MyClass
)?Wie erkennt man, ob eine Klasse eine interne Klasse oder eine Benutzerklasse ist?
Falls Sie sich wundern (und ich bin mir sicher, dass Sie tun), ist dies, weil ReflectionClass::newInstanceWithoutConstructor() eine Ausnahme auslöst, wenn für interne Klassen verwendet, und während ich eine Bibliothek zum Deep-Copy-Objekte schreibe, muss es diese internen überspringen Klassen.
Ja, ich könnte nur die ReflectionException
fangen, aber diese Ausnahme wird auch aus anderen Gründen (wie eine nicht vorhandene Klasse) ausgelöst, und wird nicht für alle Systemklassen ausgelöst. also erfüllt es meine Bedürfnisse nicht gerade.
Warum genau möchte man einen Konstruktor überspringen? –
@ Cobra_Fast: Sie würden das nie im alltäglichen Codieren tun wollen. Aber Bibliotheken tun dies, um Objekte zu hydratisieren, die aus einem persistenten Speicher geladen werden, oder in meinem Fall, um ein bereits instantiiertes Objekt tief zu kopieren. – Benjamin
Auch wenn ich es mit externen Daten bevölkern, kann die Ausführung des Konstruktors IMHO nicht falsch sein. Sie können nie wissen, welche Arten von internen Strukturen initialisiert werden müssen. –