您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        sdfasd
<?php
/**
 * 原型模式(深拷贝+浅拷贝)
 */
declare(strict_types=1);//开启强类型模式
class CopyObj
{
    public $array;
}
//抽象原型类
abstract class Prototype
{
    protected $attach;
    public function __construct(CopyObj $obj)
    {
        $this->attach = $obj;
    }
    public function set($name, $value)
    {
        $this->$name = $value;
    }
    public function get($name)
    {
        return $this->$name;
    }
    public function getAttach()
    {
        return $this->attach;
    }
    abstract public function clone();
}
class DeepCopy extends Prototype
{
    public function clone()
    {
        $obj = clone $this;
        return $obj;
    }
}
class ShallowCopy extends Prototype
{
    public function clone()
    {
        $serializeObj = serialize($this);
        $obj = unserialize($serializeObj);
        return $obj;
    }
}123
123
//----------深拷贝-------------- $chairman = new CopyObj(); $chairman->array = ['×××', '×××', '江泽明']; $deepCopyObj1 = new DeepCopy($chairman); $deepCopyObj2 = $deepCopyObj1->clone(); echo "<pre>"; var_dump($deepCopyObj1->getAttach()); var_dump($deepCopyObj2->getAttach()); //修改对象 $chairman->array = ['×××', '×××']; var_dump($deepCopyObj1->getAttach()); var_dump($deepCopyObj2->getAttach());
asdsad
//-------------浅拷贝------------- $start = new CopyObj(); $start->array = ['刘德华', '张学友', '郭富城', '黎明']; $deepCopyObj3 = new ShallowCopy($start); $deepCopyObj4 = $deepCopyObj3->clone(); var_dump($deepCopyObj3->getAttach()); var_dump($deepCopyObj4->getAttach()); //修改对象 $start->array = ['周杰伦']; var_dump($deepCopyObj3->getAttach()); var_dump($deepCopyObj4->getAttach());
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。