php類construct
⑴ 在php中,子類extends繼承了父類,當子類和父類同時存在構造函數__construct先執行哪一個呢
1、如果父類和子類中都沒有顯式的定義__construct,在實例化子類對象時,只會隱含的調用子類自己的構造方法。
2、如果父類中有顯式的構造方法__construct,而子類中沒有定義__construct,在實例化子類對象時,就會調用父類中的構造方法。
3、如果父類和子類中都顯式的定義了__construct,在實例化子類對象時,只會調用子類自己的構造方法(這就像是子類重構了父類的構造方法),而如果也想要調用父類的構造方法的話,就需要在子類的__construct 方法中顯式的調用,(如 __construct(){ parent::_construct();})。
(1)php類construct擴展閱讀
子類的構造函數名與子類名相同。
在子類里父類的構造函數不會自動執行。
要在子類里執行父類的構造函數,必須執行類似以下語句:
$this->[父類的構造函數名()]
類的構造函數統一命名為__construct()。
子類的構造函數名也是__construct()(也是廢話)。
在子類里父類的構造函數會不會執行,分兩種情況:
1、如子類不定義構造函數 __construct(),則父類的構造函數默認會被繼承下來,且會自動執行。
2、如子類定義了構造函數 __construct(),因為構造函數名也是__construct(),所以子類的構造函數實際上是覆蓋(override)了父類的構造函數。這時執行的是該子類的構造函數。
這時如果要在子類里執行父類的構造函數,必須執行類似以下語句:parent::__construct();
⑵ php構造方法對成員變數賦值 function__construct
function __construct
function 是系統關鍵詞,表示定義一個方法,後面加空格然後根方法名( __construct
是方法名)。你的未加空格
__construct 是系統內置的,叫魔術方法,每次實例化類是會自動執行此方法。
還有就是調用類的成員變數不需要在變數前面加 $ 比如:
$this->school_name = $name; 正確
$this->$school_name = $name; 錯誤
<?php
class School {
public $school_name;
public $school_student;
public $school_room;
public $school_teacher;
function __construct($name, $student, $room, $teacher) {
$this->school_name = $name;
$this->school_student = $student;
$this->school_room = $room;
$this->school_teacher = $teacher;
}
function show() {
echo "!@#$%^&*";
}
}
class People extends School {
public $teachername;
function __construct($tname, $studentconsts) {
$this->teachername = $tname;
$this->school_student = $studentconsts;
}
function show() {
return "今天上課" . $this->teachername . "講課,學生" . $this->school_student . "人";
}
}
class Tongji extends School {
function show() {
return "學校名:" . $this->school_name . "學生數:" . $this->school_student . "教室數:" . $this->school_room . "教師數:" . $this->school_teacher;
}
}
$a = new People ( "周周周", 20 );
$b = new School ( "DZ", 20, 50, 2 );
echo $a->show () . "<br>";
echo $b->show ();
?>
⑶ 誰能給我解釋下PHP類中的這個構造函數,使用的是數組作為參數.
第1個 contruct 構造函數,正如一般構造函數的基本功能一樣:對類成員屬性進行實始化。
代碼中,如果檢測到傳入的參數是個數組,就遍歷數組,然後用
$this->$key = $val;
進行類成員屬性的初始化。
這里 $key 就是 類成員屬性 的名稱,而 $val 是應該賦予的初始值。