加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

为你介绍PHP clone关键字

发布时间:2021-06-02 20:51:19 所属栏目:PHP教程 来源:互联网
导读:因为 clone 的方式实际上是对整个对象的内存区域进行了一次复制并用新的对象变量指向新的内存,因此赋值后的对象和原对象之间是相互独立的。 对象克隆成功后,它们中的成员方法、属性以及值是完全相同的。如果要对克隆后副本的成员属性重新赋值,可以使用中
因为 clone 的方式实际上是对整个对象的内存区域进行了一次复制并用新的对象变量指向新的内存,因此赋值后的对象和原对象之间是相互独立的。

对象克隆成功后,它们中的成员方法、属性以及值是完全相同的。如果要对克隆后副本的成员属性重新赋值,可以使用中介绍的 __clone() 方法。

【示例】下面通过一个简单的示例来演示一下 clone 关键字的使用。

<?php

class Website{

public $name, $url;

public function __construct($name, $url){

$this -> name = $name;

$this -> url = $url;

}

public function output(){

echo $this -> name.','.$this -> url.'<br>';

}

}

 

$obj = new Website('C语言中文网', '');

$obj2 = clone $obj;

$obj -> output();

$obj2 -> output();

echo '<pre>';

var_dump($obj);

var_dump($obj2);

?>

运行结果如下:

C语言中文网, C语言中文网, object(Website)#1 (2) {   ["name"]=>   string(16) "C语言中文网"   ["url"]=>   string(27) "" } object(Website)#2 (2) {   ["name"]=>   string(16) "C语言中文网"   ["url"]=>   string(27) "" }

注意:如果使用=将一个对象赋值给一个变量,那么这时得到的将是一个对象的引用,通过这个变量更改属性的值将会影响原来的对象。

__clone() 魔术方法 __clone() 方法不能够直接被调用,只有当通过 clone 关键字克隆一个对象时才可以使用该对象调用 __clone() 方法。当创建对象的副本时,PHP 会检查 __clone() 方法是否存在。如果不存在,那么它就会调用默认的 __clone() 方法,复制对象的所有属性。如果 __clone() 方法已经定义过,那么 __clone() 方法就会负责设置新对象的属性。所以在 __clone() 方法中,只需要覆盖那些需要更改的属性就可以了。

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读