php同名構造函數和__construct構造函數的共存問題

php4以前的版本中,類的構造函數即是類的同名函數,而到了php5類的構造函數多了一個__construct魔法函數,那當這兩個同時存在時,構造實例時調用的到底是哪個函數呢?
有疑問就直接敲代碼來驗證答案:
1、兩個函數都存在的情況下

<?php
class A{
var $str = "construct";
function __construct(){
$this->str = "construct";
}
function A(){
$this->str = "A";
}
}
$a = new A();
echo $a->str;
?>

運行結果輸出是construct
這裏如果__construct(){}不設置值時,其輸出結果也爲空,並不會是A。
2、如果魔法函數不存在時

<?php
class A{
var $str = "construct";

function A(){
$this->str = "A";
}
}
$a = new A();
echo $a->str;
?>

輸出結果爲A,
這說明魔法函數優先級要大於同名函數,兩者同時存在時只調用魔法構造函數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章