PHP5 物件導向程式設計_PHP教程

來源:互聯網
上載者:User
PHP5有一個單重繼承的,限制訪問的,可以重載的物件模型. 本章稍後會詳細討論的”繼承”,包含類間的父-子關係. 另外,PHP支援對屬性和方法的限制性訪問. 你可以聲明成員為private,不允許外部類訪問. 最後,PHP允許一個子類從它的父類中重載成員.

PHP5的物件模型把對象看成與任何其它資料類型不同,通過引用來傳遞. PHP不要求你通過引用(reference)顯性傳遞和返回對象. 在本章的最後將會詳細闡述基於引用的物件模型. 它是PHP5中最重要的新特性.

有了更直接的物件模型,就擁有了附加的優勢: 效率提高, 佔用記憶體少,並且具有更大的靈活性.

在PHP的前幾個版本中,指令碼預設複製對象.現在PHP5隻移動控制代碼,需要更少的時間. 指令碼執行效率的提升是由於避免了不必要的複製. 在對象體系帶來複雜性的同時,也帶來了執行效率上的收益. 同時,減少複製意味著佔用更少的記憶體,可以留出更多記憶體給其它操作,這也使效率提高.

Zand引擎2具有更大的靈活性. 一個令人高興的發展是允許析構--在對象銷毀之前執行一個類方法. 這對於利用記憶體也很有好處,讓PHP清楚地知道什麼時候沒有對象的引用,把空出的記憶體配置到其它用途.

補充:

PHP5的記憶體管理

對象傳遞



PHP5使用了Zend引擎II,對象被儲存於獨立的結構Object Store中,而不像其它一般變數那樣儲存於Zval中(在PHP4中對象和一般變數一樣儲存於Zval)。在Zval中僅儲存物件的指標而不是內容(value)。當我們複製一個對象或者將一個對象當作參數傳遞給一個函數時,我們不需要複製資料。僅僅保持相同的對象指標並由另一個zval通知現在這個特定的對象指向的Object Store。由於對象本身位於Object Store,我們對它所作的任何改變將影響到所有持有該對象指標的zval結構----表現在程式中就是目標對象的任何改變都會影響到來源物件。.這使PHP對象看起來就像總是通過引用(reference)來傳遞,因此PHP中對象預設為通過“引用”傳遞,你不再需要像在PHP4中那樣使用&來聲明。



記憶體回收機制

某些語言,最典型的如C,需要你顯式地要求分配記憶體當你建立資料結構。一旦你分配到記憶體,就可以在變數中儲存資訊。同時你也需要在結束使用變數時釋放記憶體,這使機器可以空出記憶體給其它變數,避免耗光記憶體。

PHP可以自動進行記憶體管理,清除不再需要的對象。PHP使用了引用計數(reference counting)這種單純的記憶體回收(garbage collection)機制。每個對象都內含一個引用計數器,每個reference串連到對象,計數器加1。當reference離開生存空間或被設為NULL,計數器減1。當某個對象的引用計數器為零時,PHP知道你將不再需要使用這個對象,釋放其所佔的記憶體空間。

例如:

複製代碼 代碼如下:
class Person{
}
function sendEmailTo(){
}

$haohappy = new Person( );
// 建立一個新對象: 引用計數 Reference count = 1
$haohappy2 = $haohappy;
// 通過引用複製: Reference count = 2
unset($haohappy);
// 刪除一個引用: Reference count = 1
sendEmailTo($haohappy2);
// 通過引用傳遞對象:
// 在函數執行期間:
// Reference count = 2
// 執行結束後:
// Reference count = 1

unset($haohappy2);
// 刪除引用: Reference count = 0 自動釋放記憶體空間

?>

http://www.bkjia.com/PHPjc/318700.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/318700.htmlTechArticlePHP5有一個單重繼承的,限制訪問的,可以重載的物件模型.本章稍後會詳細討論的”繼承”,包含類間的父-子關係.另外,PHP支援對屬性和方法的限...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.