php 4.X與5.x版本建構函式區別與類的繼承

來源:互聯網
上載者:User

標籤:des   style   color   io   ar   for   sp   問題   cti   

今天看ecshop源碼的時候發現 建構函式是和類名一樣,以前沒接觸過,一下子疑惑啦

HP4.x 版本:

    PHP 4.x 的建構函式名與類名相同。    
    注意:在子類裡父類的建構函式不會自動執行。
    要在子類裡執行父類的建構函式,必須執行類似以下語句:
      $this->[父類的建構函式名()]

    例如:

    class base1
    {
      function base1()
      {
        echo ‘this is base1 construct‘;
      }
    }

    class class1 extends base1
    {
      function class1()
      {
        $this->base1();
        echo ‘this is class1 construct‘;
      }
    }
    $c1 = new class1;

PHP5.x 版本:

    PHP5.0 以上版本對類的功能進行了很大的擴充。類的建構函式統一命名為__construct()。
    在子類裡父類的建構函式會不會執行,分兩種情況:
    1,如子類不定義建構函式 __construct(),則父類的建構函式預設會被繼承下來,且會自動執行。
    2,如子類定義了建構函式 __construct(),因為建構函式名也是__construct(),所以子類的建構函式實際上是覆蓋(override)了父類的建構函式。這時執行的是該子類的建構函式。
       這時如果要在子類裡執行父類的建構函式,必須執行類似以下語句:

    parent::__construct();

    例如:

    class base2
    {
      function __construct()
      {
        echo ‘this is base2 construct‘;
      }
      function __destruct()
      {
      }
    }

    class class2 extends base2
    {
      function __construct()
      {
        parent::__construct();
        echo ‘this is class2 construct‘;
      }
    }

    注意 parent::__construct(); 語句不一定必須放在子類的建構函式中。放在子類的建構函式中僅僅保證了其在子類被執行個體化時自動執行。

PHP4.0 和 5.0 類建構函式的相容問題:

    在 PHP5.0 以上版本裡,還相容了 4.0 版本的建構函式的定義規則。如果同時定義了4.0的建構函式和 __construct()函數,則__construct() 函數優先。
    為了使類代碼同時相容 PHP4.0 和 5.0,可以採取以下的方式:

    class class3
    {
      function __construct() //for PHP5.0
      {
        echo ‘this is class2 construct‘;
      }

      function class3() //for PHP4.0
      {
        $this->__construct();
      }
    }

    $c3 = new class3;

php 4.X與5.x版本建構函式區別與類的繼承

聯繫我們

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