Wann führt print_r() dazu, dass DateTime-Objekte Phantomeigenschaften erhalten?

Barbara Streisand
Freigeben: 2024-10-21 12:50:02
Original
304 Leute haben es durchsucht

When Does print_r() Cause DateTime Objects to Gain Phantom Properties?

print_r()-Funktion und DateTime-Objekte: Hinzufügen von Phantomeigenschaften

In PHP 5.3 kann die print_r()-Funktion dazu führen, dass DateTime-Objekte erfasst werden zusätzliche Eigenschaften, die nicht explizit in der Klasse definiert sind. Betrachten Sie das folgende Codebeispiel:

<code class="php">$m_oDate = new DateTime('2013-06-12 15:54:25');
print_r($m_oDate);</code>
Nach dem Login kopieren

Die Ausgabe dieses Codes enthält zusätzliche Eigenschaften wie „Datum“, die standardmäßig nicht sichtbar sind.

Wenn es sich jedoch um dasselbe Objekt handelt Wird direkt darauf zugegriffen, sind diese Eigenschaften undefiniert:

<code class="php">$m_oDate = new DateTime('2013-06-12 15:54:25');
echo $m_oDate->date;</code>
Nach dem Login kopieren

Diese Inkonsistenz entsteht durch eine Änderung in den PHP 5.3-Interna, um das Debuggen zu erleichtern, indem zusätzliche Informationen über den in DateTime-Objekten gespeicherten Zeitstempel bereitgestellt werden. Dies führt zur Erstellung von Phantom-öffentlichen Eigenschaften, wenn das Objekt als Text ausgegeben wird.

Um dieses Problem zu vermeiden, wird empfohlen, stattdessen Reflektion oder die entsprechenden DateTime-Methoden zu verwenden, um auf die gewünschten Informationen zuzugreifen. Hier sind einige Beispiele:

  • $obj->date

    • Verwenden Sie $obj->format('Y-m-d H: i:s') stattdessen.
  • $obj->timezone

    • Verwenden Sie $obj->getTimezone ()->getName(), $obj->getTimezone()->getOffset() oder $obj->getTimezone()->listAbbreviations() stattdessen.

Beachten Sie, dass auf die Eigenschaft „timezone_type“ nicht über die PHP-API zugegriffen werden kann, da es sich um einen internen Wert handelt, der sich auf die Zeichenfolgendarstellung der Zeitzone bezieht.

Das obige ist der detaillierte Inhalt vonWann führt print_r() dazu, dass DateTime-Objekte Phantomeigenschaften erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!