Position actuelle: Accueil> Derniers articles> Analyse de la relation entre la classe DATE_CREATE_IMMUTABLE ET DatetimeMutable

Analyse de la relation entre la classe DATE_CREATE_IMMUTABLE ET DatetimeMutable

gitbox 2025-05-29

En PHP, les dates de traitement et les heures sont une exigence très courante en matière de développement. PHP fournit une variété de façons de créer et de manipuler des objets de date et de temps, parmi lesquels la classe DateTimeMutable et la fonction date_create_immutable () sont deux outils plus importants et pratiques. De nombreux développeurs ont tendance à confondre la relation entre les deux lors de leur utilisation. Cet article expliquera en détail la connexion et les différences entre elles pour vous aider à mieux les comprendre et les utiliser.


1. Quelle est la classe DatetimeMutable?

DateTimeMutable est une classe intégrée en PHP qui représente les objets date et heure. Contrairement à la classe DateTime , une instance de DateTimeMutable ne peut pas être modifiée une fois qu'elle est créée. Toutes les opérations qui modifient la date et l'heure renvoient un nouvel objet DateTimeMutable au lieu de modifier l'objet d'origine lui-même.

Cela apporte des avantages évidents: il assure l'immuabilité de l'objet, évite les erreurs de programme causées par une modification accidentelle de l'objet et rend le code plus robuste et plus facile à entretenir.

 $date = new DateTimeImmutable('2025-05-29');
$newDate = $date->modify('+1 day');

echo $date->format('Y-m-d');     // Sortir 2025-05-29
echo $newDate->format('Y-m-d');  // Sortir 2025-05-30

Comme on peut le voir à partir du code ci-dessus, l'objet $ Date lui-même n'a pas changé et la méthode Modify () renvoie un nouvel objet.


2. Quelle est la fonction date_create_immutable?

date_create_immutable () est une fonction fournie par PHP pour créer une instance de la classe DatetimeMutable . Il s'agit d'une encapsulation pratique du constructeur de classe DateTimeMutable .

La fonction est définie comme suit:

 function date_create_immutable(string $time = "now", ?DateTimeZone $timezone = null): DateTimeImmutable

Il accepte les paramètres de chaîne de temps et de fuseau horaire et renvoie un objet DateTimeMutable .

 $date = date_create_immutable('2025-05-29 12:00:00');
echo get_class($date);  // Sortir DateTimeImmutable

3. La relation entre les deux

  • Contact de base : la fonction date_create_immutable () est en fait une fonction pratique utilisée pour créer un objet DateTimeMutable , ce qui équivaut à l'exécution de nouveaux DateTimeMutable () .

  • La même fonction : l'appel date_create_immutable ('heure') est exactement le même que l'exécution de nouveaux DateTimeMutable ('heure') , tous deux génèrent un objet de date et d'heure immuable.

  • Concstance : en utilisant des fonctions, le code semble parfois plus concis et facilite également l'utilisation des méthodes d'appel de fonction dans certains environnements ou bibliothèques.


4. Comment les comprendre correctement et les utiliser en PHP?

  1. Comprendre l'importance de l'immuabilité

    L'objectif principal de l'utilisation de DatetimeMutable et de ses fonctions connexes est d'éviter la modification accidentelle de l'état de l'objet. Vous devez choisir lorsque vous souhaitez vous assurer que l'objet date-temps reste inchangé tout au long du cycle de vie.

  2. Choisissez comment créer un objet

    • Si vous aimez l'écriture orientée objet, vous pouvez directement utiliser une nouvelle datetimeMutable () .

    • Si vous voulez que le code soit plus fonctionnel ou si vous souhaitez être compatible avec certains cadres qui acceptent uniquement les appels de fonction, vous pouvez utiliser date_create_immutable () .

  3. Évitez la confusion

    Ne confondez pas date_create_immutable () pour une fonction normale qui renvoie une chaîne ou un tableau. Il renvoie toujours un objet DatetimeMutable et toutes ses méthodes peuvent être appelées.

  4. Avec une opération DateTimeimutable

    Vous pouvez utiliser date_create_immutable () pour créer un objet, puis utiliser la date à travers toutes les méthodes fournies par la classe immuable, telles que modifier () , add () , sub () , etc. Ces opérations renverront un nouvel objet.


5. Résumé

  • DateTimeimutable est une classe immuable de date de PHP, et l'objet ne peut pas être modifié.

  • date_create_immutable () est une fonction d'usine pratique utilisée pour créer rapidement des objets DateTimeMutable .

  • Utilisez-les pour écrire du code plus sûr et maintenable.

  • Il n'y a pas de différence entre les deux par essence. La méthode de création à choisir dépend de vos habitudes de codage et de vos besoins.

Pour plus de détails, veuillez consulter la documentation officielle PHP:
https://gitbox.net/manual/en/class.datetimeimutable.php
https://gitbox.net/manual/en/fonction.date-create-immutable.php