PHP中__clone()方法详解-php教程

资源魔 33 0
__clone(),当工具复制实现时挪用

正在少数状况下,咱们其实不需求齐全复制一个工具来取得此中属性。但有一个状况下的确需求:假如你有一个 GTK 窗口工具,该工具持有窗口相干的资本。你可能会想复制一个新的窗口,放弃一切属性与原来的窗口相反,但必需是一个新的工具(由于假如没有是新的工具,那末一个窗口中的扭转就会影响到另外一个窗口)。

另有一种状况:假如工具 A 中保留着工具 B 的援用,当你复制工具 A 时,你想此中应用的工具再也不是工具 B 而是 B 的一个正本,那末你必需失去工具 A 的一个正本。

作用:

工具复制能够经过 clone 要害字来实现(假如可能,这将挪用工具的 __clone() 办法)。工具中的 __clone() 办法不克不及被间接挪用。

语法:

$copy_of_object = clone $object;

留意:

当工具被复制后,PHP 5 会对工具的一切属性执行一个浅复制(shallow copy)。一切的援用属性 依然会是一个指向原来的变量的援用。

当复制实现时,假如界说了 __clone() 办法,则新创立的工具(复制天生的工具)中的 __clone() 办法会被挪用,可用于修正属性的值(假如有须要的话)。

看代码:

<?php
class Person
{
    public $sex;
    public $name;
    public $age;
    public function __construct($name="",  $age=25, $sex='男')
    {
        $this->name = $name;
        $this->age  = $age;
        $this->sex  = $sex;
    }
    public function __clone()
    {
        echo __METHOD__."你在克隆工具<br>";
    }
}
$person = new Person('小明'); // 初始赋值
$person2 = clone $person;
var_dump('persion1:');
var_dump($person);
echo '<br>';
var_dump('persion2:');
var_dump($person2);

看后果:

Person::__clone你在克隆工具
string(9) "persion1:" object(Person)#1 (3) { ["sex"]=> string(3) "男" ["name"]=> string(6) "小明" ["age"]=> int(25) } 
string(9) "persion2:" object(Person)#2 (3) { ["sex"]=> string(3) "男" ["name"]=> string(6) "小明" ["age"]=> int(25) }

克隆胜利。

以上就是PHP中__clone()办法详解的具体内容,更多请存眷资源魔其它相干文章!

标签: php开发教程 php开发资料 php开发自学 clone()

抱歉,评论功能暂时关闭!