PHP 物件的克隆(clone)與引用(=)的區別
如果有一個例項化的物件:Object1
那麼:
$Object2 = $Object1
$Object2 = clone $Object1
有什麼區別呢?
$Object2 = $Object1 是引用;
$Object2 = clone $Object1 是克隆;
引用就是:當改變$Object1物件時,$Object2也做相同的變化。
克隆就是:克隆的物件$Object1與原來的物件沒有任何關係,它是將原來的物件從當前位置從新複製了一份。
那麼在實際的開發當中怎麼判斷兩個物件之間的關係是克隆可是引用呢?
這時可以使用比較運算子“==”和"==="。兩個等號“==”是比較兩個物件的內容,三個等號“===”是比較物件的引用地址。
顯然,如果是引用的話,他們的引用地址應該是相同的。
相關推薦
PHP 物件的克隆(clone)與引用(=)的區別
如果有一個例項化的物件:Object1 那麼: $Object2 = $Object1 $Object2 = clone $Object1 有什麼區別呢? $Object2 = $Object1 是引用; $Object2 = clone $Object1 是克隆; 引用就
PHP學習——26 PHP面向物件(物件的克隆clone與魔術方法__call、__callStatic)
一、物件的拷貝 <?php // 1.物件的拷貝 class Demo { public $name = 'Tonny'; } $demo1 = new Demo(); $demo2 = $demo1; // 引用賦值,實際上$demo1和$demo1指向同一個物件 $demo3
PHP面向物件_物件克隆clone和魔術方法__clone()
1.物件克隆 clone PHP4面向物件功能一個很大的缺點,是將物件視為另一種資料型別,這使得很多常見的OOP方法無法使用,如設計模式。這些方法依賴於將物件作為引用傳遞給其他類方法,而不是作為值傳遞,而按值傳遞卻是PHP的預設做法。幸好,PHP5解決了這
深入理解PHP中賦值與引用
str ring int 之前 不同 重新 small nts 計數 【原文】 先看下面的問題: 1 2 3 4 5 6 7 8 <?php $a = 10;//將常量值賦給變量,會為a分配內存空間 $b = $a;//變量賦值給變量,是不是
PHP中的 extends與implements 區別
extends 是繼承某個類 ,繼承之後可以使用父類的方法 ,也可以重寫父類的方法。 implements 是實現多個介面,介面的方法一般為空的,必須重寫才能使用. extends是繼承父類,只要那個類不是宣告為final或者那個類定義為abstract的就能繼承,php中不支援多重繼承,但
JVM概念之Java物件的大小與引用型別
本文來自和你在一起的部落格,原文標題:《JVM調優總結(二)-一些概念》。本文總結了JVM概念中的Java物件的大小,以及三種引用型別的定義與區分。 基本資料的型別的大小是固定的,這裡就不多說了。對於非基本型別的Java物件,其大小就值得商榷。 在Java中,一個空Obj
JQ的物件與dom的物件(.eq()與[]的區別)
首先我們假設一個html中有以下元素: <div class="sel"></a> <div class="sel"></a> <div class="sel"></a> 使用JQ選擇元素的時
java 淺拷貝和深拷貝 物件克隆clone
轉載:https://www.cnblogs.com/xuanxufeng/p/6558330.html#top class Professor0 implements Cloneable { String name; int age; Professor0(String
PHP之值傳遞與引用傳遞
廢話不多說,直接上程式碼(值傳遞與引用傳遞的區別我在這就不介紹了,不懂得的小夥伴直接程式碼理解,還是不懂 -> 自行度娘): 普通變數: 值傳遞 <?php $a = 6; ec
php的循環與引用的一個坑
clas it is var 輸出 導致 數組 代碼 troy 指針 以下代碼運行結果出人意料: $arr = array( ‘a‘=> ‘a11‘, ‘b‘=> ‘b22‘, ‘c‘=> ‘c33‘,); foreach ($arr
php物件(object) 與 陣列(array) 的區別以及轉換
php中物件和陣列的區別 物件不僅有屬性,還有方法;,物件可以封裝對這些資料的操作,而陣列是辦不到的。 因此:如果是單純存資料,就用陣列,但如果你要定義對這些資料的操作,更建議使用物件! 舉例: 如果你想在操作的資料里加個通用的方法,比如返回值是加密的,或者其它等等功能,這時
php中傳值與傳引用的有什麼區別
php傳值:在函式範圍內,改變變數值得大小,都不不會影響到函式外邊的變數值。 PHP按引用:在函式範圍內,對值的任何改變,在函式外部也有所體現,因為傳引用傳的是記憶體地址。 <?php //傳值 $a = 1; $b = 2; $b = $a; $a = 3; echo $b.
值類型與引用類型的區別
希望 false 浮點 引號 博客 長度 導致 忘記 基礎 值類型 基本類型 4類8種 整型 byte 字節型 1長度 0~255
檢測某個方法是否屬於某個類中--解析php函數method_exists()與is_callable()的區別
檢查 -1 元素 高級 ech 9.png true strong 原創 php函數method_exists() 與is_callable()的區別在哪?在php面相對象設計過程中,往往我們需要在調用某一個方法是否屬於某一個類的時候做出判斷,常用的方法有 meth
php __CLASS__、get_class()與get_called_class()的區別
ima src bar tle log mvc框架 pan tin 代碼 __CLASS__獲取當前的類名, get_class()與上面一樣,都是獲取當前的類名 get_called_class()獲取當前主調類的類名 當涉及到繼承時,在方法中使用類名。直接貼圖了 M
php get_called_class()函數與get_class函數的區別
lin body family pan bsp gpo php onos str get_class (): 獲取當前調用方法的類名; get_called_class():獲取靜態綁定後的類名; 有例為證: class Foo{ public fu
php中cookie和session的區別與簡易用法
php cookie session 一、區別1、Cookie是完全保存在客戶端。當客戶端禁止cookie時將不能再使用;對服務端壓力較小;可以指定生存周期;安全性差。2、Session是存放在服務端的。但session id是存放在客戶端的cookie中的,但php的session存放方法是多樣
物件的克隆(clone)技術:像變數值傳遞一樣建立新物件
class Demo{ public $name = 'peter'; } $obj1 = new Demo;$obj2 = $obj1; //物件都是引用賦值$obj3 = clone $obj1; //克隆,相當於值傳遞賦值,將當前物件複製到新的變數中$obj4 = new Demo;$obj1
PHP物件遍歷、內建標準類與資料轉物件
一、物件遍歷 物件也可以可以使用foreach語句進行遍歷,有兩點注意: 1,只能遍歷屬性。 2,只能遍歷“看得到”的屬性——程式碼所在範圍可訪問。 在外面遍歷: 可見,此時protected和private屬性都沒有遍歷出來。 如果需要全部遍歷,則改造為:
結構體與物件的聯絡與區別
結構體與物件的聯絡與區別 1.結構體是一種值型別,而類是引用型別。值型別用於儲存資料的值,引用型別用於儲存對實際資料的引用。 那麼結構體就是當成值來使用的,類則通過引用來對實際資料操作。 2.結構使用棧儲存(Stack Allocation),而類使用堆儲存(Heap Allocatio