09/10/2018, 23:58
mong giải thích __clone method ?
hix em đang học php nhưng đọc đến thằng này(clone) thấy khó hiểu quá bác nào có thể giúp em giải thích được không ạ.Thanks nhiều
Bài liên quan
Trong ví dụ ở http://www.php.net/manual/en/language.oop5.cloning.php
<?php
class SubObject
{
static $instances = 0;
public $instance;
public function __construct() {
$this->instance = ++self::$instances;
}
public function __clone() {
$this->instance = ++self::$instances;
}
}
class MyCloneable
{
public $object1;
public $object2;
function __clone()
{
// Force a copy of this->object, otherwise
// it will point to same object.
$this->object1 = clone $this->object1;
}
}
$obj = new MyCloneable();
$obj->object1 = new SubObject();
$obj->object2 = new SubObject();
$obj2 = clone $obj;
print("Original Object:\n");
print_r($obj);
print("Cloned Object:\n");
print_r($obj2);
?>
$this->object1 = clone $this->object1;
Nếu trong PHP4:
$object2 = $object1;
Trong PHP5 thì khác
Nếu dùng khai báo trên thì object1 hay object2 cũng chỉ là một đối tượng, nếu 1 trong 2 thay đổi ra sao thì cái còn lại cũng thay đổi y vậy. Tương đương với
$object2 = &$object1;
Nếu muốn object2 độc lập như trong php thì phải dùng clone
$object2 = clone $object1;