課程
/后端開發
/PHP
/大話PHP設計模式
比如說有兩個對象都是同一個原型clone出來的,如果修改了一個對象的值,另一個會不會受到影響,應該會吧。。。
2015-03-27
源自:大話PHP設計模式 10-1
正在回答
并不會,clone出來的對象已經是另一個對象了,就比如我執行下面的代碼
class?Animal{ public?$name?=?"Cat"; } $cat?=?new?Animal(); echo?$cat->name."\n"; $dog?=?clone?$cat; echo?$dog->name."\n"; $dog->name?=?"Dog"; echo?$dog->name."\n"; var_dump($dog); var_dump($cat);
然后在運行的結果如下:
Cat Cat Dog object(Animal)#2?(1)?{ ??["name"]=> ??string(3)?"Dog" } object(Animal)#1?(1)?{ ??["name"]=> ??string(3)?"Cat" } [Finished?in?0.3s]
注意,我var_dump出來的兩個對象的#后面的id值是不同的,也就是說這是兩個不同的對象,那么改變了Dog對象的name值也不會對Cat對象造成影響。
KingZero00
PHP的clone是淺復制,克隆的新對象只是源對象的引用
一樣的疑惑,如果是指針的話,我也覺得會
qq_陌_37
舉報
幫助PHPer具備使用設計模式解決工程中復雜邏輯的能力
7 回答老師 抽象類不是要至少擁有一個抽象方法嗎
3 回答面向對象是什么?
4 回答clone是php里的一個關鍵字?
5 回答原型模式是clone 一個原型,那為什么不用單例模式呢? 這樣也很省資源啊~
1 回答面向對象編程的基本原則
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-08-02
并不會,clone出來的對象已經是另一個對象了,就比如我執行下面的代碼
然后在運行的結果如下:
注意,我var_dump出來的兩個對象的#后面的id值是不同的,也就是說這是兩個不同的對象,那么改變了Dog對象的name值也不會對Cat對象造成影響。
2015-11-04
PHP的clone是淺復制,克隆的新對象只是源對象的引用
2015-04-24
一樣的疑惑,如果是指針的話,我也覺得會