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.
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.
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
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.
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.
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 () .
É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.
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.
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