Position actuelle: Accueil> Derniers articles> Quelle est la différence entre les fonctions date_create_immutable et date_create? Comment choisir de l'utiliser dans PHP?

Quelle est la différence entre les fonctions date_create_immutable et date_create? Comment choisir de l'utiliser dans PHP?

gitbox 2025-06-29

1. Fonction Date_create ()

Date_create () est une fonction utilisée pour créer un objet DateTime variable. En appelant cette fonction, vous pouvez créer un objet DateTime qui représente la date et l'heure en cours, ou créer une date spécifique en passant dans une chaîne de date spécifique.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$datetime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_create</span></span><span>(</span><span><span class="hljs-string">'2025-06-21 12:00:00'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$datetime</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Caractéristique :

  • date_create () renvoie un objet DateTime , qui est mutable. Vous pouvez modifier sa valeur en appelant la méthode de l'objet.

  • Des méthodes d'objet telles que modifier () , add () , sub () , etc., vous permettent de modifier la date et l'heure.

 <span><span><span class="hljs-variable">$datetime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_create</span></span><span>(</span><span><span class="hljs-string">'2025-06-21 12:00:00'</span></span><span>);
</span><span><span class="hljs-variable">$datetime</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">modify</span></span><span>(</span><span><span class="hljs-string">'+1 day'</span></span><span>);  </span><span><span class="hljs-comment">// Modifier le lendemain de l&#39;heure actuelle</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$datetime</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);  </span><span><span class="hljs-comment">// Sortir la date modifiée</span></span><span>
</span></span>

2. Date_create_immutable () Fonction

date_create_immutable () est similaire à date_create () et est également utilisé pour créer des objets date, mais il renvoie un objet DateTimeMutable immuable. Cela signifie qu'une fois l'objet créé, sa date et son heure ne peuvent plus être modifiées.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$datetimeImmutable</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_create_immutable</span></span><span>(</span><span><span class="hljs-string">'2025-06-21 12:00:00'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$datetimeImmutable</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Caractéristique :

  • date_create_immutable () renvoie un objet DateTimeMutable , qui est immuable et ne peut pas modifier la date et l'heure à travers les méthodes après la création.

  • Vous ne pouvez pas modifier directement la valeur de l'objet DateTimeMutable , mais vous pouvez réaliser l'effet "modifier" en renvoyant un nouvel objet.

 <span><span><span class="hljs-variable">$datetimeImmutable</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_create_immutable</span></span><span>(</span><span><span class="hljs-string">'2025-06-21 12:00:00'</span></span><span>);
</span><span><span class="hljs-variable">$newDatetime</span></span><span> = </span><span><span class="hljs-variable">$datetimeImmutable</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">modify</span></span><span>(</span><span><span class="hljs-string">'+1 day'</span></span><span>);  </span><span><span class="hljs-comment">// Renvoyer un nouvel objet</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$newDatetime</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);  </span><span><span class="hljs-comment">// Sortir la date modifiée</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$datetimeImmutable</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);  </span><span><span class="hljs-comment">// Sortir la date d&#39;origine,Pas changé</span></span><span>
</span></span>

3. Résumé des différences

caractéristiques date_create () date_create_immutable ()
Type de retour DateTime Datetimeimutable
L'objet peut-il être modifié Peut être modifié Non modifié
Utiliser des scénarios Convient aux scénarios où les dates doivent être modifiées Convient aux scénarios où vous ne souhaitez pas modifier la date d'origine

4. Comment choisir d'utiliser

  1. Utilisez date_create () :

    • Lorsque vous devez modifier la date, il est plus approprié d'utiliser date_create () . Il permet une modification directe des objets date et heure, tels que par des méthodes telles que modifier () , add () , etc.

    • Si votre application doit ajuster et manipuler fréquemment les valeurs de date de date, date_create () offre plus de flexibilité.

  2. Utilisez date_create_immutable () :

    • Si vous souhaitez vous assurer que les objets de date sont immuables et assurez-vous qu'ils ne sont pas accidentellement modifiés lors du traitement des dates, l'utilisation de Date_create_immutable () est une option plus sûre.

    • Dans les scénarios multithread ou simultanés, l'utilisation d'objets immuables peut éviter certains problèmes de concurrence potentiels, car les objets immuables ne seront pas affectés par des modifications externes.

5. Résumé

Bien que date_create () et date_create_immutable () crée les deux d'objets date, la principale différence entre eux est la mutabilité. Date_create () Renvoie un objet qui peut être modifié, et date_create_immutable () renvoie un objet immuable. La fonction à choisir dépend de vos exigences d'application. Si une modification de la date flexible est requise, date_create () est un choix plus approprié; Si vous devez vous assurer que l'objet n'est pas modifié de manière inattendue, date_create_immutable () est le meilleur choix.