程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP5 的對象賦值機制介紹

PHP5 的對象賦值機制介紹

編輯:關於PHP編程

復制代碼 代碼如下:
<?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底層。當類生成一個實例(對象)的時候,返回值$instance並不是對象本身,而只是對象的一個id(或者資源句柄),所以,當$instance被賦值給$assigned的時候,$assigned也指向了這個對象,這有點像普通變量的引用(&)操作。所以,當對$instance初始化的時候,$assigned也被初始化了。但是,當$instance被銷毀(=null)的時候,因為對應的對象還有一個句柄存在($assigned),所以對象並不會被銷毀,析構函數也不會被觸發。結果,var_dump($assigned)是對象的值,而$instance已經是空句柄,顯示null。$reference因為與$instance有類似普通變量間的引用關系,所以也成為空句柄,顯示 null。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved