Comment cloner un objet en php

Comment cloner un objet en php
Dans un langage de programmation orienté objet, un objet agit comme une variable de référence. Par conséquent, si une variable d'objet est attribuée à une autre variable à l'aide de l'opérateur d'affectation, les deux variables feront référence au même emplacement, et si la valeur d'une variable est modifiée, la valeur de l'autre variable changera automatiquement.

Dans ce tutoriel, nous allons cloner un objet PHP pour créer une copie de l'objet.

Utilisation de l'opérateur d'affectation pour copier un objet

La valeur de la variable d'objet peut être copiée dans une autre variable en PHP en utilisant le clonage d'objet. Dans PHP, une copie peu profonde de l'objet peut être créée en utilisant le mot-clé cloner, et une copie profonde de l'objet peut être créée en utilisant la méthode __cloner(). Dans l'exemple suivant, nous utilisons le clone de mot-clé et la méthode __cloner() Lorsqu'une variable d'objet est affectée à une autre variable.

Utilisez le code ci-dessous pour créer un fichier PHP appelé SansClone.php, et stocker le fichier dans l'emplacement du serveur Web. Ici, un cours nommé de cours est déclaré; Le cours contient une variable, $ cours_id, et une fonction, Détails(). La fonction imprimera les détails du cours en fonction de l'ID de cours. Ensuite, un objet nommé $ objure est déclaré accéder aux membres de la classe.

Une fois la valeur de $ cours_id est affecté à l'aide de cet objet et la variable d'objet est affectée à $ objcrs, Les deux variables utiliseront le même emplacement dans la mémoire pour la référence. Par conséquent, si la valeur d'un objet est modifiée, alors l'autre objet sera automatiquement modifié s'ils sont copiés.

// définir une classe
Cours de classe

// Déclarer la variable
public $ Course_id;
// Déclarer la méthode
Détails de la fonction publique ()

// imprime la sortie en fonction de la condition
if ($ this-> cours_id == 'cse-202')

Echo "Nom du cours: structure de données
"
Echo "Hour de crédit: 2.0
"

else if ($ this-> cours_id == 'cse-305')

Echo "Nom du cours: programmation orientée objet";
écho "
Heure de crédit: 3.0 ";



// Créer un objet de cours de cours
$ objCourse = nouveau cours ();
// Définir la propriété
$ objCourse-> Course_id = "CSE-202";
écho "La sortie avant d'assigner une nouvelle valeur:

"
// appelle la méthode
$ objCourse-> Details ();
// Copie d'objet
$ objcrs = $ objCourse;
// définir une nouvelle valeur pour l'objet copié
$ objcrs-> Course_id = "CSE-305";
écho "
La sortie après avoir assigné une nouvelle valeur:

"
// Appelez à nouveau la méthode
$ objCourse-> Details ();
?>

Vous obtiendrez la sortie suivante après avoir exécuté le script à partir du serveur Web. Ici, si la valeur de $ objcrs est modifiée, alors la valeur de $ objure est modifiée à la même valeur.

Utilisation du mot-clé Clone pour copier un objet

Le cloner Le mot-clé peut être utilisé pour résoudre le problème ci-dessus. Utilisez le code suivant pour créer un fichier nommé cloner.php. La même classe est utilisée ici. L'objet de la classe est cloné vers un autre objet en utilisant le cloner mot-clé pour créer une copie de l'objet. Si la valeur d'une variable change, elle ne modifiera pas la valeur de l'autre variable.

// définir une classe
Cours de classe

// Déclarer la variable
public $ Course_id;
// Déclarer la méthode
Détails de la fonction publique ()

// imprime la sortie en fonction de la condition
if ($ this-> cours_id == 'cse-202')

Echo "Nom du cours: structure de données
"
Echo "Hour de crédit: 2.0
"

else if ($ this-> cours_id == 'cse-305')

Echo "Nom du cours: programmation orientée objet
"
Echo "Hour de crédit: 3.0 ";



// Créer un objet de cours de cours
$ objCourse = nouveau cours ();
// Définir la propriété
$ objCourse-> Course_id = "CSE-202";
écho "La sortie de l'objet principal avant de clôturer et d'assigner une nouvelle valeur:

"
// appelle la méthode
$ objCourse-> Details ();
// objet clone
$ objcrs = clone $ objCourse;
// définir une nouvelle valeur pour l'objet copié
$ objcrs-> Course_id = "CSE-305";
écho "
La sortie de l'objet principal après clonage et assigature de nouvelles valeurs:

"
// appelle la méthode pour $ objure
$ objCourse-> Details ();
écho "
La sortie de l'objet cloné:

"
// appelle la méthode pour $ objcr
$ objcrs-> Détails ();
?>

Vous obtiendrez la sortie suivante après avoir exécuté le script à partir du serveur Web. Ici, lorsque la valeur de $ objcrs sera modifiée, la valeur de $ objure restera inchangée.

Utilisation de la méthode __clone () pour copier un objet

Le __cloner() La méthode peut également être utilisée pour résoudre le problème ci-dessus. À l'aide du code bwlow, créez un fichier nommé avec un clonéméméthode.php. La même classe est utilisée ici. Le __cloner() La méthode est utilisée dans le script avec le mot-clé clone. Cette méthode est appelée automatiquement lorsqu'un objet est cloné vers un autre objet. Selon le script, une nouvelle valeur est attribuée pour l'objet cloné à l'intérieur du __cloner() méthode.

// définir une classe
Cours de classe

// Déclarer la variable
public $ Course_id;
// définir la méthode __clone ()
fonction publique __clone ()
$ this-> cours_id = "cse-305";

// Déclarer la méthode
Détails de la fonction publique ()

// imprime la sortie en fonction de la condition
if ($ this-> cours_id == 'cse-202')

Echo "Nom du cours: structure de données
"
Echo "Hour de crédit: 2.0
"

else if ($ this-> cours_id == 'cse-305')

Echo "Nom du cours: programmation orientée objet";
écho "
Heure de crédit: 3.0 ";



// Créer un objet de cours de cours
$ objCourse = nouveau cours ();
// Définir la propriété
$ objCourse-> Course_id = "CSE-202";
écho "La sortie de l'objet principal avant de clôturer et d'assigner une nouvelle valeur:

"
// appelle la méthode
$ objCourse-> Details ();
// objet clone
$ objcrs = clone $ objCourse;
écho "
La sortie de l'objet principal après cloning:

"
// appelle la méthode pour $ objure
$ objCourse-> Details ();
écho "
La sortie de l'objet cloné:

"
// appelle la méthode pour $ objcr
$ objcrs-> Détails ();
?>

Vous obtiendrez la sortie suivante après avoir exécuté le script à partir du serveur Web. Ici, quand $ objcrs est cloné, sa valeur est modifiée par le __cloner() méthode, mais la valeur de $ objure reste inchangé. La valeur de $ objure est imprimé avant et après le clonage. La valeur de $ objcrs est imprimé plus tard.

Conclusion

Le clonage est une caractéristique utile de PHP qui peut être utilisée pour créer une copie d'un objet. Les deux cloner mot-clé et le __cloner() la méthode est indiquée dans ce tutoriel via des exemples simples. Nous espérons que ce tutoriel vous a aidé à comprendre le clonage des objets.