Fonction print_r() et objets DateTime : ajout de propriétés fantômes
En PHP 5.3, la fonction print_r() peut provoquer l'acquisition d'objets DateTime propriétés supplémentaires qui ne sont pas explicitement définies dans la classe. Prenons l'exemple de code suivant :
<code class="php">$m_oDate = new DateTime('2013-06-12 15:54:25'); print_r($m_oDate);</code>
La sortie de ce code inclura des propriétés supplémentaires, telles que "date", qui ne sont pas visibles par défaut.
Cependant, si le même objet est accessible directement, ces propriétés ne seront pas définies :
<code class="php">$m_oDate = new DateTime('2013-06-12 15:54:25'); echo $m_oDate->date;</code>
Cette incohérence provient d'un changement dans les composants internes de PHP 5.3 pour faciliter le débogage en fournissant des informations supplémentaires sur l'horodatage stocké dans les objets DateTime. Cela conduit à la création de propriétés publiques fantômes lorsque l'objet est transféré dans du texte.
Pour éviter ce problème, il est recommandé d'utiliser la réflexion ou les méthodes DateTime appropriées pour accéder aux informations souhaitées. Voici quelques exemples :
$obj->date
$obj->timezone
Notez que la propriété "timezone_type" n'est pas accessible via l'API PHP car il s'agit d'une valeur interne liée à la représentation sous forme de chaîne du fuseau horaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!