Maison >développement back-end >tutoriel php >'Cloner des moutons' en php

'Cloner des moutons' en php

autoload
autoloadoriginal
2021-03-15 15:30:132082parcourir

Définition : Cloner un objetclone, c'est-à-dire copier un objet nouveau et identique à partir d'un objet existant, mais les deux ne sont pas le même objet.

1. Le clonage d'objets est réalisé grâce au mot-clé clone, à savoir : clone 对象;

<?php
class Saler{
  	//属性
  	public $count;				
  	private $money;
}
//实例化
$s1 = new Saler();
$s1->count = 1;

//克隆
$s2 = clone $s1;
?>

2. L'objet cloné et l'objet original ont deux adresses mémoire, ce sont donc deux objets différents

<?php
//接上述代码
$s2->count = 2;

echo $s1->count;		//1,没有变化
?>

3. L'objet appellera automatiquement le constructeur existant lorsqu'il sera instancié __construct(), De même, à l'intérieur la classe, PHP vous permet de définir une méthode __clone(). Une fois l'objet cloné, l'objet nouvellement cloné appellera automatiquement

<?php
class Saler{
  	//属性
  	public $count;				
  	private $money;
    //克隆方法
    public function __clone(){
        var_dump($this);			//编号为2,代表是克隆出来的对象
        $this->count++;
    }
}
//实例化
$s1 = new Saler();
$s1->count = 1;

//克隆
$s2 = clone $s1;
?>

4. Si l'objet n'est pas autorisé à être cloné. Vous pouvez privatiser la méthode __clone() (ne permettant essentiellement pas de cloner l'objet en externe)

<?php
class Saler{
  	//属性
  	public $count;				
  	private $money;
    //私有化克隆方法
    private function __clone(){}
}
//实例化
$s1 = new Saler();
$s1->count = 1;

//克隆
$s2 = clone $s1;			//致命错误:不允许对象在外部访问一个私有方法
?>

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