大家好
 
PHP有個複製物件的方式
例如以下這樣
 
$objectB = clone $objectA;
但是大家一定會納悶
怎麼會用到這樣的複製方式呢?
直接 "等於" 不就好了嗎?
 
所以我來說說我遇到的情況
<?php
class aa
{
     static $val;//靜態參數
}

class vv//物件
{
     var $h = 1;
}

aa::$val = new vv;
$bb = aa::$val;
$bb->h = 2;

echo 'aa::$val = '.aa::$val->h.'<br>';
echo '$bb = '.$bb->h.'<br>';
?>
大家會發現
$bb 的物件變成了aa中的物件
但是我的目標是取得aa中的 vv物件的值
且不會影響到原本aa物件中的 vv物件的值
但是在以上例子中
$bb 物件明顯的等於aa物件中的 vv物件
所以這時候
就需要使用
$objectB = clone $objectA;
<?php
class aa
{
     static $val;//靜態參數
}

class vv//物件
{
     var $h = 1;
}

aa::$val = new vv;
$bb = aa::$val;
$bb = clone aa::$val;
$bb->h = 2;

echo 'aa::$val = '.aa::$val->h.'<br>';
echo '$bb = '.$bb->h.'<br>';
?>
 
這樣就會正常了
 
希望對大家有幫助
感恩!