首頁 > 後端開發 > PHP問題 > PHP中與類別名稱相同的方法是什麼

PHP中與類別名稱相同的方法是什麼

青灯夜游
發布: 2023-03-10 11:38:01
原創
3151 人瀏覽過

在PHP中,類別名稱與方法名稱可以相同,如果方法名稱和類別名稱相同,且沒有“__construct”,那麼該方法會被當作建構子。 php建構函數是類別中的一個特殊函數,當使用new操作符建立一個類別的實例時,建構函數將會自動呼叫。

PHP中與類別名稱相同的方法是什麼

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

建構子

#
__construct ( mixed ...$values = "" ) : void
登入後複製

PHP 允許開發者在一個類別中定義一個方法作為建構子。具有建構函式的類別會在每次建立新物件時先呼叫此方法,所以非常適合在使用物件之前做一些初始化工作。

注意: 如果子類別中定義了建構子則不會隱式呼叫其父類別的建構子。要執行父類別的建構函數,需要在子類別的建構子中呼叫 parent::__construct()。如果子類別沒有定義建構函式則會如同一個普通的類別方法一樣從父類別繼承(假如沒有被定義為 private 的話)。

範例#1 繼承中的建構子

<?php
class BaseClass {
    function __construct() {
        print "In BaseClass constructor\n";
    }
}
class SubClass extends BaseClass {
    function __construct() {
        parent::__construct();
        print "In SubClass constructor\n";
    }
}
class OtherSubClass extends BaseClass {
    // 继承 BaseClass 的构造函数
}
// In BaseClass constructor
$obj = new BaseClass();
// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();
// In BaseClass constructor
$obj = new OtherSubClass();
?>
登入後複製

與其它方法不同,當__construct() 被與父類別__construct() 具有不同參數的方法覆寫時, PHP 不會產生一個E_STRICT 錯誤訊息。

自 PHP 5.3.3 起,在命名空間中,與類別名稱同名的方法不再作為建構子。不使用命名空間中的類別則不受影響。建構函式是一個普通的方法,在對應物件實例化時會自動被呼叫。因此可以定義任何數量的參數,可以是必選、可以有型別、可以有預設值。構造器的參數放在類別名稱後的括號裡呼叫。

範例 #2 使用建構器參數

<?php
class Point {
    protected int $x;
    protected int $y;
    public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
}
// 两个参数都传入
$p1 = new Point(4, 5);
// 仅传入必填的参数。 $y 会默认取值 0。
$p2 = new Point(4);
// 使用命名参数(PHP 8.0 起):
$p3 = new Point(y: 5, x: 4);
?>
登入後複製

如果一個類別沒有建構函數,以及建構函數的參數不是必填項時,括號就可以省略。

推薦學習:《PHP影片教學

以上是PHP中與類別名稱相同的方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板