PHP5 的對(duì)象賦值機(jī)制介紹
<?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 改寫了OOP底層。當(dāng)類生成一個(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被銷毀(=null)的時(shí)候,因?yàn)閷?duì)應(yīng)的對(duì)象還有一個(gè)句柄存在($assigned),所以對(duì)象并不會(huì)被銷毀,析構(gòu)函數(shù)也不會(huì)被觸發(fā)。結(jié)果,var_dump($assigned)是對(duì)象的值,而$instance已經(jīng)是空句柄,顯示null。$reference因?yàn)榕c$instance有類似普通變量間的引用關(guān)系,所以也成為空句柄,顯示 null。
相關(guān)文章
PHP去除數(shù)組中重復(fù)的元素并按鍵名排序函數(shù)
用php實(shí)現(xiàn)的去除數(shù)組中重復(fù)的函數(shù)2008-08-08c#中的實(shí)現(xiàn)php中的preg_replace
最近在按照一個(gè)php項(xiàng)目用c#重寫,一邊學(xué)習(xí)同時(shí)發(fā)現(xiàn)了他們的神似神不似的很多地方2009-12-12PHP生成器(generator)和協(xié)程的實(shí)現(xiàn)方法詳解
這篇文章主要介紹了PHP生成器(generator)和協(xié)程的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了php生成器以及由此延伸出來(lái)的協(xié)程相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-07-07PHP實(shí)現(xiàn)導(dǎo)出excel數(shù)據(jù)的類庫(kù)用法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)導(dǎo)出excel數(shù)據(jù)的類庫(kù)用法,結(jié)合實(shí)例形式分析了php操作Excel數(shù)據(jù)的讀取與導(dǎo)出操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-10-10PHP中register_globals參數(shù)為OFF和ON的區(qū)別(register_globals 使用詳解)
register_globals是php.ini里的一個(gè)配置,這個(gè)配置影響到php如何接收傳遞過(guò)來(lái)的參數(shù),如果你的問(wèn)題是:為什么我的表單無(wú)法傳遞數(shù)據(jù)?為什么我的程序無(wú)法得到傳遞過(guò)來(lái)的變量?等等,那么你需要仔細(xì)的閱讀以下的內(nèi)容2012-02-02PHP列出MySQL中所有數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了PHP列出MySQL中所有數(shù)據(jù)庫(kù)的方法,涉及php操作數(shù)據(jù)庫(kù)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03php判斷某個(gè)方法是否存在函數(shù)function_exists (),method_exists()與is_callabl
這篇文章主要介紹了php判斷某個(gè)方法是否存在函數(shù)function_exists (),method_exists()與is_callable()區(qū)別與用法,結(jié)合實(shí)例形式分析了php function_exists (),method_exists()與is_callable()基本功能、用法、區(qū)別與操作注意事項(xiàng),需要的朋友可以參考下2020-04-04淺析PHP中Session可能會(huì)引起并發(fā)問(wèn)題
關(guān)于PHP session并發(fā)問(wèn)題估計(jì)各大程序員都不會(huì)想到這個(gè)問(wèn)題,因?yàn)橐话闱闆r我們不會(huì)使用session來(lái)做并發(fā)操作了,但有時(shí)也有可能用到,今天我們就來(lái)簡(jiǎn)單談?wù)勥@個(gè)略微偏門的問(wèn)題2015-07-07