php 構造方法

來源:互聯網
上載者:User
這是我第一次寫 博文。

我想說的是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 類的構造方法.

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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.