为什么要用__clone魔术方法?明明可以不用啊?( 见代码注释)

来源:2-10 PHP类和对象之对象的高级特性

Datcg

2017-04-09 12:40

class Car {

    public $name = 'car';

//不懂下面的克隆函数有啥用,明明就算不用它,依然可以用clone复制啊???    

/*    public function __clone() {

        $obj = new Car();

        $obj->name = $this->name;

    }*/

}

$a = new Car();

$a->name = 'new car';

$b = clone $a;//这个克隆和直接赋值=又有啥差别呢?

if ($a == $b) echo '==';   //true

if ($a === $b) echo '==='; //false


$str = serialize($b); //对象序列化成字符串

echo $str.'<br>';

$c = unserialize($str); //反序列化为对象

var_dump($c);


写回答 关注

4回答

  • 野生码农在线co腚
    2017-04-18 14:21:53
    已采纳

    http://www.imooc.com/video/3689

    carol_...

    感谢分享!

    2019-10-31 14:40:06

    共 6 条回复 >

  • Amethyst_凉
    2017-11-09 19:57:08

    clone函数里的东西可以不用,课程里面只是为了让大家看得清楚

    你把clone函数的东西去掉,也能运行。

  • 告诉我我行
    2017-07-09 16:19:42


    使用_clone() 就将屏蔽_clone() 内的 复制 永远初始化

  • qq_放飞的回忆_03938427
    2017-04-09 14:10:57

    用__clone魔术方法可以让你克隆之后的代码重复利用,减少你代码的重复率。


    Datcg

    不是这个意思,看我代码,屏蔽了__clone(),不也可以复制吗?

    2017-04-09 14:14:18

    共 1 条回复 >

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181724 学习 · 2575 问题

查看课程

相似问题