程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 創建類實例的構造方法調用問題

php 創建類實例的構造方法調用問題

編輯:關於PHP編程

本文說的是php創建一個類的實例的時候,構造方法調用的問題。

php中不像java一樣,創建一個class的實例的時候 會自動的首先調用父類(超類)的構造方法,以確保所有的屬性都可以被正確的初始化。php 不會在本類的構造方法中再自動的調用父類的構造方法。如果真的需要調用父類的構造方法,可以手動的調用parent::__construct($params...);   

class Base{
function __construct(){
//do sth here....
}
}

如果我們需要些一個Extender 來繼承Base,我們需要注意的是

1、我們是否需要調用父類的構造方法用於初始化

2、我們是否需要在父類構造方法的基礎上在進行其他的一些擴展操作

3、我們不需要Base構造方法中的那些初始化動作。

如果我們的Extender 只滿足情況1,那麼我們可以省略Extender的構造方法,因為父類的構造方法完全符合我們的要求,我們就沒有必要再進行額外的編碼。

如果我們的Extender 滿足情況2,那麼我們要在 Extender的 構造方法中 先調用parent::__construct(),先進行初始化,然後 在進行一些擴展操作

如果我們的Extender 滿足情況3,我們可以選擇不調用父類的構造方法。只是這樣做有一個缺陷:我們再擴張Extender的時候,如果這個擴展類需要Base構造方法的初始化操作,這時候再調用parent::__construct() 只能調用 Extender的構造方法 而不能調用 Base 類的構造方法.

所以,個人認為,最好還是在子類的構造方法中手動的調用 父類的構造方法。

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