對PHP建構函式的理解

2021-09-01 09:06:20 字數 1232 閱讀 1487

php5開始可以在類中宣告__construct構造方法,當物件被例項化的時候,該方法被呼叫。

注意:1.如果在繼承的子類中沒有構造方法而父類中有構造方法,那麼當例項化子類時,父類的構造方法會被隱式呼叫。

2.如果子類有構造方法,父類中也有構造方法,那麼子類要顯示呼叫parent::__construct()才能父類的構造方法。

為了向後相容,如果在php5類中沒有找到__construct()方法,它會去找與類名相同的方法名的構造器,但是如果同時使用兩個構造器,有可能會發生 e_strict 級別的錯誤資訊:

(以下**是本人web環境:win32+php5.3.8+apache2.2測試)

<?php

class b

public function __construct()

public function other()

}$b = new b();

?>

結果:strict standards: redefining already defined constructor for class b in d:\xampp\htdocs\test3\class.php on line 8

this is __construct()

但僅調換下方法的位置結果卻不一樣:

<?php

class x

public function x()

public function other()

}$x = new x();

?>

其實,從php5.3.3開始,與類名相同的方法不再做為類的構造方法,命名空間類也一樣,要是使用的是php5.3.3以上的版本,就不能使用與類同名的方法作為構造方法了:

<?php

namespace foo;

class bar

}?>

如果非要在php5.3.3以上同時使用兩個構造器,那麼可以這樣:

<?php

class y

public function y()

public function other()

}$y = new y();

?>

php的建構函式理解

建構函式 是一種特殊的方法。主要用來在建立物件時初始化物件,即為物件成員變數 賦初始值,總與new運算子 一起使用在建立物件的語句中。特別的乙個類可以有多個建構函式 可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載 經常可以看到這樣 function construct param...

對C 預設建構函式的理解

在文章開始之前,首先指出對於c 新手的兩個常見的誤解 一 任何class如果沒有定義default constructor,就會被合成出乙個來。二 編譯器合成出來的default constructor會明確設定 class內每乙個data member的預設值 首先我們來討論第乙個誤解。編譯器並不...

對php函式的簡單理解

function foo arg 1 arg 2 arg n functionc fun1 fun2 function fun1 a b 1 fun1 b 根據函式的定義,b是引用傳遞 echo b 輸出 2,因為 b在函式中執行了 a 注意 符號 需要改變變數值的時候需要新增 這個 是執行 a 後...