色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php class拷貝

在PHP編程中,經(jīng)常會(huì)遇到需要將一個(gè)類(lèi)的實(shí)例拷貝到另一個(gè)地方的情況。這時(shí)候,就需要使用到PHP的類(lèi)拷貝功能。

在PHP中,有兩種拷貝方式:淺拷貝和深拷貝。

淺拷貝是指拷貝一個(gè)對(duì)象,但是該對(duì)象中的引用類(lèi)型的數(shù)據(jù)成員只是拷貝了引用而已。這意味著,如果原對(duì)象中的引用類(lèi)型的數(shù)據(jù)成員發(fā)生了改變,那么拷貝出來(lái)的對(duì)象也會(huì)受到影響。

來(lái)看一個(gè)例子:

class MyClass {
public $a = 1;
public $b = array();
public function add($value) {
array_push($this->b, $value);
}
}
// 淺拷貝
$c1 = new MyClass();
$c1->add('foo');
$c2 = clone $c1;
$c1->add('bar');
var_dump($c1->b); // array('foo', 'bar')
var_dump($c2->b); // array('foo', 'bar')

可以看到,在淺拷貝過(guò)程中,$c1和$c2的$b屬性都指向同一個(gè)數(shù)組。因此,當(dāng)我們?cè)?c1中給$b數(shù)組增加了一個(gè)元素后,$c2中的$b數(shù)組也隨之改變了。

相對(duì)于淺拷貝,深拷貝則會(huì)遞歸地將一個(gè)對(duì)象中所有引用類(lèi)型的數(shù)據(jù)成員都復(fù)制一份。這樣,即使原對(duì)象中的引用類(lèi)型的數(shù)據(jù)成員發(fā)生了改變,拷貝出來(lái)的對(duì)象也不會(huì)受到影響。

來(lái)看一個(gè)使用深拷貝的例子:

class MyClass {
public $a = 1;
public $b = array();
public function add($value) {
array_push($this->b, $value);
}
}
// 深拷貝
$c1 = new MyClass();
$c1->add('foo');
$c2 = unserialize(serialize($c1));
$c1->add('bar');
var_dump($c1->b); // array('foo', 'bar')
var_dump($c2->b); // array('foo')

在深拷貝的例子中,我們將$c1序列化之后,又進(jìn)行了一次反序列化,從而得到了一個(gè)與原對(duì)象完全相同但是卻是獨(dú)立的對(duì)象$c2。