Print_r() ändert DateTime-Objekte
Print_r() fügt Eigenschaften zu DateTime-Objekten hinzu und ermöglicht so die Introspektion während des Debuggens. Dieses Verhalten, ein Nebeneffekt der in PHP 5.3 eingeführten internen Funktionalität, weist Instanzen, die als Text ausgegeben werden, Phantom-Public-Eigenschaften zu.
Um Fehler aufgrund dieser Eigenschaften zu vermeiden, verwenden Sie stattdessen Reflektion. Die Suche nach diesen Eigenschaften ist jedoch nicht ratsam, da sie nicht offiziell in der Klasse definiert sind und sich ihre Daten in zukünftigen PHP-Versionen ändern können.
Greifen Sie stattdessen über die folgenden API-definierten Methoden auf die gewünschten Informationen zu:
<code class="php">// $obj->date $obj->format('Y-m-d H:i:s'); // $obj->timezone $obj->getTimezone()->getName(); // or... $obj->getTimezone()->getOffset(); // or... $obj->getTimezone()->listAbbreviations();</code>
Auf die Eigenschaft timezone_type, einen internen Wert, der den Typ der Zeitzonenzeichenfolge beschreibt (Zeitversatz, Abkürzung oder Bezeichner), kann nicht über die PHP-API zugegriffen werden.
Das obige ist der detaillierte Inhalt vonWarum werden bei Verwendung von Print_r() Phantomeigenschaften zu DateTime-Objekten hinzugefügt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!