欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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 改寫了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)文章

最新評(píng)論