Maison  >  Article  >  développement back-end  >  Comment utiliser le mot-clé php clone

Comment utiliser le mot-clé php clone

青灯夜游
青灯夜游original
2021-07-23 19:44:291899parcourir

En PHP, le mot-clé clone peut être utilisé pour cloner des objets. Le format de syntaxe est "cloner le nom de l'objet = cloner le nom de l'objet d'origine ;" ; une fois que les objets ont été clonés avec succès, leurs méthodes membres, leurs attributs et leurs valeurs sont exactement. le même. Si vous souhaitez réaffecter les attributs de membre de la copie clonée, vous pouvez utiliser la méthode "__clone()".

Comment utiliser le mot-clé php clone

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3

Mot-clé clone PHP (objet clone)

Le modèle objet en PHP appelle les objets par référence, mais parfois, il est nécessaire de créer une copie d'un objet et vous ne souhaitez pas affecter la copie de l'objet lors de la modification de l'objet d'origine. Si vous utilisez le nouveau mot-clé pour recréer l'objet, puis attribuez la même valeur aux propriétés, cela sera fastidieux et sujet aux erreurs. En PHP, vous pouvez cloner un objet identique à partir d'un objet existant. Après le clonage, l'objet d'origine et l'objet de copie sont complètement indépendants et n'interfèrent pas l'un avec l'autre.

En PHP, vous pouvez utiliser le mot-clé clone pour cloner un objet. Le format de syntaxe est le suivant :

克隆对象名称 = clone 原对象名称;

Parce que la méthode clone copie en fait toute la zone mémoire de l'objet et utilise la nouvelle variable d'objet pour pointer vers la nouvelle mémoire, donc après affectation L'objet et l'objet d'origine sont indépendants l'un de l'autre.

Une fois les objets clonés avec succès, leurs méthodes membres, propriétés et valeurs sont exactement les mêmes. Si vous souhaitez réaffecter les attributs de membre de la copie clonée, vous pouvez utiliser la méthode __clone().

【Exemple】Ce qui suit utilise un exemple simple pour démontrer l'utilisation du mot-clé clone.

<?php
    class Website{
        public $name, $url;
        public function __construct($name, $url){
            $this -> name = $name;
            $this -> url  = $url;
        }
        public function output(){
            echo $this -> name.&#39;,&#39;.$this -> url.&#39;<br>&#39;;
        }
    }
    $obj  = new Website(&#39;PHP中文网&#39;, &#39;https://www.php.cn/&#39;);
    $obj2 = clone $obj;
    $obj  -> output();
    $obj2 -> output();
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    var_dump($obj);
    var_dump($obj2);
?>

Les résultats en cours d'exécution sont les suivants :

PHP中文网,https://www.php.cn/
PHP中文网,https://www.php.cn/
object(Website)#1 (2) {
  ["name"]=>
  string(16) "PHP中文网"
  ["url"]=>
  string(27) "https://www.php.cn/"
}
object(Website)#2 (2) {
  ["name"]=>
  string(16) "PHP中文网"
  ["url"]=>
  string(27) "https://www.php.cn/"
}

Remarque : Si vous utilisez = pour affecter un objet à une variable, alors ce que vous obtiendrez sera une référence à l'objet. Changer la valeur de l'attribut via cette variable. affecter l’objet original.

__clone() méthode magique

__clone() ne peut pas être appelée directement Ce n'est que lorsqu'un objet est cloné via le mot-clé clone que l'objet peut être utilisé pour appeler la méthode __clone(). Lors de la création d'une copie d'un objet, PHP vérifie si la méthode __clone() existe. S'il n'existe pas, il appelle la méthode __clone() par défaut, copiant toutes les propriétés de l'objet. Si la méthode __clone() a été définie, alors la méthode __clone() sera chargée de définir les propriétés du nouvel objet. Ainsi, dans la méthode __clone(), il vous suffit de remplacer les propriétés qui doivent être modifiées. La méthode

__clone() ne nécessite aucun paramètre. Voici un exemple pour démontrer :

<?php
    class Website{
        public $name, $url;
        public function __construct($name, $url){
            $this -> name = $name;
            $this -> url  = $url;
        }
        public function output(){
            echo $this -> name.&#39;,&#39;.$this -> url.&#39;<br>&#39;;
        }
        public function __clone(){
            $this -> name = &#39;PHP教程&#39;;
            $this -> url  = &#39;https://www.php.cn/&#39;;
        }
    }
    $obj  = new Website(&#39;PHP中文网&#39;, &#39;https://www.php.cn/&#39;);
    $obj2 = clone $obj;
    $obj  -> output();
    $obj2 -> output();
?>

Les résultats d'exécution sont les suivants :

PHP中文网,https://www.php.cn/
PHP教程,https://www.php.cn/

Conseils : Si un paramètre vide est défini dans la classe, l'autorisation d'accès est définie. est privé (privé) La méthode __clone() peut désactiver le clonage.

Apprentissage recommandé : "Tutoriel vidéo PHP"

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn