首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 建構子繼承機制詳解:三種情況完整對照

     編輯:PHP 相關知識

建構子繼承三大情況

情況一:子類別未定義建構子 → 自動繼承父類別建構子

<?php
class A {
    public $name;
    function __construct() {
        echo $this->name = "小強";
    }
}
class B extends A { }
$bb = new B(); // 輸出:小強
?>

情況二:子類別定義了建構子 → 不繼承父類別建構子(覆蓋)

<?php
class A {
    public $name;
    function __construct() {
        echo $this->name = "小強";
    }
}
class B extends A {
    function __construct() {
        echo "BBBBBB 子類別";
    }
}
$bb = new B(); // 輸出:BBBBBB 子類別
?>

情況三:子類別需同時執行父建構子 → 显式呼叫 parent::__construct()

<?php
class A {
    function __construct() {
        echo "父類別建構子 ";
    }
}
class B extends A {
    function __construct() {
        parent::__construct(); // 或 A::__construct()
        echo "子類別建構子";
    }
}
$b = new B(); // 輸出:父類別建構子 子類別建構子
?>

關鍵規則

  • PHP **不支援**建構子自動鏈式呼叫(不同於 Java/C#),子類別定義 __construct 即切斷繼承。
  • 需父建構子邏輯時,**必須在子建構子首行显式呼叫 parent::__construct()**。
  • 舊式同名建構子(function A())在 PHP 7+ 已棄用,統一使用 __construct。

實務建議

若父類別建構子執行關鍵初始化(資料庫連線、配置載入等),子類別**務必**显式呼叫 parent::__construct(),避免遺漏導致難以除錯的錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved