问答详情
源自:2-10 PHP类和对象之对象的高级特性

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

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);


提问者:Datcg 2017-04-09 12:40

个回答

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

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

  • 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魔术方法可以让你克隆之后的代码重复利用,减少你代码的重复率。