定義:複製物件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中文網其他相關文章!