首頁  >  文章  >  後端開發  >  php中的“克隆羊”

php中的“克隆羊”

autoload
autoload原創
2021-03-15 15:30:131975瀏覽

定義:複製物件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()方法私有化(本質是不允許物件在外部被克隆)

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

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

推薦:php影片教學

#

以上是php中的“克隆羊”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn