Heim >Backend-Entwicklung >PHP-Tutorial >„Schaf klonen' in PHP

„Schaf klonen' in PHP

autoload
autoloadOriginal
2021-03-15 15:30:132075Durchsuche

Definition: Klonen Sie ein Objekt klonen, d. h. kopieren Sie ein neues und identisches Objekt von einem vorhandenen Objekt, aber die beiden sind nicht dasselbe Objekt. clone,即通过已有的对象复制一个新的同样的对象,但是两者之间并非同一个对象。

    1.对象克隆是通过clone关键字实现,即:clone 对象;

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

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

    2.克隆出来的对象与原来对象是两个内存地址,因此是两个不同的对象

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

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

    3. 对象在实例化的时候会自动调用存在的构造方法__construct(),同样的,在类的内部,PHP允许定义一个__clone()的方法,在对象被克隆后,新克隆出来的对象会自动调用

<?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.如果不允许对象被克隆,可以将__clone()

1. Das Klonen von Objekten erfolgt über das Schlüsselwort clone, d das ursprüngliche Objekt Zwei Speicheradressen, also zwei verschiedene Objekte

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

//克隆
$s2 = clone $s1;			//致命错误:不允许对象在外部访问一个私有方法
?>
3. Wenn das Objekt instanziiert wird, ruft es automatisch die vorhandene Konstruktormethode __construct() auf, ähnlich innerhalb der Klasse Mit PHP können Sie eine __clone()-Methode definieren. Nachdem das Objekt geklont wurde, ruft das neu geklonte Objekt automatisch

rrreee🎜 🎜 auf. 4. Wenn das Objekt nicht geklont werden darf, können Sie Folgendes tun: kann die Privatisierung der Methode __clone() verwenden (ermöglicht im Wesentlichen nicht das externe Klonen von Objekten)🎜🎜rrreee🎜🎜Empfohlen: 🎜🎜php-Video-Tutorial🎜🎜

Das obige ist der detaillierte Inhalt von„Schaf klonen' in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn