国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP基礎(chǔ)之類和對(duì)象17——對(duì)象復(fù)制

瀏覽:3日期:2022-09-14 18:48:21

在多數(shù)情況下,我們并不需要完全復(fù)制一個(gè)對(duì)象來(lái)獲得其中屬性。但有一個(gè)情況下確實(shí)需要:如果你有一個(gè) GTK 窗口對(duì)象,該對(duì)象持有窗口相關(guān)的資源。你可能會(huì)想復(fù)制一個(gè)新的窗口,保持所有屬性與原來(lái)的窗口相同,但必須是一個(gè)新的對(duì)象(因?yàn)槿绻皇切碌膶?duì)象,那么一個(gè)窗口中的改變就會(huì)影響到另一個(gè)窗口)。還有一種情況:如果對(duì)象 A 中保存著對(duì)象 B 的引用,當(dāng)你復(fù)制對(duì)象 A 時(shí),你想其中使用的對(duì)象不再是對(duì)象 B 而是 B 的一個(gè)副本,那么你必須得到對(duì)象 A 的一個(gè)副本。 對(duì)象復(fù)制可以通過(guò) clone 關(guān)鍵字來(lái)完成(如果可能,這將調(diào)用對(duì)象的?__clone()?方法)。對(duì)象中的?__clone()?方法不能被直接調(diào)用。

$copy_of_object = clone $object;

當(dāng)對(duì)象被復(fù)制后,PHP 5 會(huì)對(duì)對(duì)象的所有屬性執(zhí)行一個(gè)淺復(fù)制(shallow copy)。所有的引用屬性 仍然會(huì)是一個(gè)指向原來(lái)的變量的引用。

void?__clone?(?void?)

當(dāng)復(fù)制完成時(shí),如果定義了?__clone()?方法,則新創(chuàng)建的對(duì)象(復(fù)制生成的對(duì)象)中的?__clone()?方法會(huì)被調(diào)用,可用于修改屬性的值(如果有必要的話)。

Example #1 復(fù)制一個(gè)對(duì)象

<?php class SubObject {static $instances = 0;public $instance;public function __construct() { $this->instance = ++self::$instances;}public function __clone() { $this->instance = ++self::$instances;} } class MyCloneable {public $object1;public $object2;function __clone(){ // 強(qiáng)制復(fù)制一份this->object, 否則仍然指向同一個(gè)對(duì)象 $this->object1 = clone $this->object1;} } $obj = new MyCloneable(); $obj->object1 = new SubObject(); $obj->object2 = new SubObject(); $obj2 = clone $obj; print('Original Object:n'); print_r($obj); print('Cloned Object:n'); print_r($obj2);?>以上例程會(huì)輸出:

Original Object:MyCloneable Object( [object1] => SubObject Object( [instance] => 1) [object2] => SubObject Object( [instance] => 2))Cloned Object:MyCloneable Object( [object1] => SubObject Object( [instance] => 3) [object2] => SubObject Object( [instance] => 2))

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 深泽县| 红原县| 吴忠市| 安乡县| 鸡西市| 沭阳县| 澜沧| 西林县| 南通市| 平谷区| 潮安县| 哈尔滨市| 河东区| 商丘市| 库伦旗| 杭州市| 怀化市| 弥勒县| 堆龙德庆县| 黔西| 井陉县| 青浦区| 延津县| 东宁县| 海门市| 大连市| 清徐县| 甘孜县| 美姑县| 甘谷县| 饶平县| 宁明县| 大宁县| 巴林右旗| 上犹县| 前郭尔| 庆安县| 扎赉特旗| 北碚区| 土默特右旗| 名山县|