PHP5 的對(duì)象賦值機(jī)制介紹
更新時(shí)間:2011年08月02日 22:10:42 作者:
看到PHP設(shè)計(jì)模式中值對(duì)象模式中的例題,對(duì)于結(jié)果總感到有點(diǎn)疑惑。回頭看了下PHP5的對(duì)象賦值才真正清楚。
復(fù)制代碼 代碼如下:
<?php
class SimpleClass{
public $var = 'a default value';
public function displayVar() {
echo $this->var;
}
}
$instance = new SimpleClass();
$assigned = $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance and $reference become null var_dump($instance);var_dump($reference);var_dump($assigned);
var_dump($instance);
var_dump($assigned);
var_dump($reference);
?>
php5 改寫(xiě)了OOP底層。當(dāng)類(lèi)生成一個(gè)實(shí)例(對(duì)象)的時(shí)候,返回值$instance并不是對(duì)象本身,而只是對(duì)象的一個(gè)id(或者資源句柄),所以,當(dāng)$instance被賦值給$assigned的時(shí)候,$assigned也指向了這個(gè)對(duì)象,這有點(diǎn)像普通變量的引用(&)操作。所以,當(dāng)對(duì)$instance初始化的時(shí)候,$assigned也被初始化了。但是,當(dāng)$instance被銷(xiāo)毀(=null)的時(shí)候,因?yàn)閷?duì)應(yīng)的對(duì)象還有一個(gè)句柄存在($assigned),所以對(duì)象并不會(huì)被銷(xiāo)毀,析構(gòu)函數(shù)也不會(huì)被觸發(fā)。結(jié)果,var_dump($assigned)是對(duì)象的值,而$instance已經(jīng)是空句柄,顯示null。$reference因?yàn)榕c$instance有類(lèi)似普通變量間的引用關(guān)系,所以也成為空句柄,顯示 null。
相關(guān)文章
利用PHP判斷是手機(jī)移動(dòng)端還是PC端訪問(wèn)的函數(shù)示例
在平常工作開(kāi)發(fā)中,我們通常需要開(kāi)發(fā)出PC端和移動(dòng)端兩個(gè)不同的系統(tǒng),從而根據(jù)訪問(wèn)端的不同進(jìn)入到不同的操作界面中。下面這篇文章主要給大家介紹了關(guān)于利用PHP判斷是手機(jī)移動(dòng)端還是PC端訪問(wèn)的函數(shù)的相關(guān)資料,需要的朋友可以參考下。2017-12-12
PHP批量上傳圖片的具體實(shí)現(xiàn)方法介紹.
這篇文章主要介紹了PHP批量上傳圖片的具體實(shí)現(xiàn)方法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02
自己寫(xiě)的兼容低于PHP 5.5版本的array_column()函數(shù)
這篇文章主要介紹了自己寫(xiě)的兼容低于PHP 5.5版本的array_column()函數(shù),array_column是PHP 5.5新增函數(shù),有時(shí)在低版本中也可能要用到,需要的朋友可以參考下2014-10-10
PHP請(qǐng)求遠(yuǎn)程地址設(shè)置超時(shí)時(shí)間的解決方法
下面小編就為大家?guī)?lái)一篇PHP請(qǐng)求遠(yuǎn)程地址設(shè)置超時(shí)時(shí)間的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
php常用數(shù)組函數(shù)實(shí)例小結(jié)
這篇文章主要介紹了php常用數(shù)組函數(shù),結(jié)合實(shí)例形式總結(jié)分析了php常用數(shù)組函數(shù)array_merge、array_slice及array_map的功能與使用技巧,需要的朋友可以參考下2016-12-12
PHP下ajax跨域的解決方案之window.name實(shí)例分析
這篇文章主要介紹了PHP下ajax跨域的解決方案之window.name,結(jié)合實(shí)例形式分析PHP ajax跨域的解決方案window.name基本原理、操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-03-03
兼容性最強(qiáng)的PHP生成縮略圖的函數(shù)代碼(修改版)
寫(xiě)通用性程序考慮兼容性是很頭痛的事情,關(guān)于用PHP生成縮略圖的代碼很多,不過(guò)能完全兼容gd1.6和gd2.x,并能保證縮圖清晰性的代碼幾乎沒(méi)有,我把我以前的代碼改了一下,就能實(shí)現(xiàn)了。2011-01-01
解析PHP SPL標(biāo)準(zhǔn)庫(kù)的用法(遍歷目錄,查找固定條件的文件)
本篇文章是對(duì)PHP中SPL標(biāo)準(zhǔn)庫(kù)的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

