PHP不可以定義多個構造方法的原因是:
PHP的構造方法與Java的有所不同,不能有多個構造方法,只能有一個構造方法,若想要實現類似Java的構造方法的使用,可以使用下面的辦法來實現:
//PHP構造方法使用
class Test{
function __construct(){
echo 'Test類無參構造方法被調用<br/>';
$a=func_get_args();
$i=func_num_args();
//判斷Test類是否有__constructxx方法,將方法名記爲$f
if(method_exists($this,$f='__construct'.$i)){
//若存在xx方法,使用call_user_func_array(arr1,arr2)函數調用他,該函數的參數爲兩個數組,前面的數組爲調用誰($this)的什麼($f)方法,後一個數組爲參數
call_user_func_array(array($this,$f),$a);
}
}
function __construct1($a1){
echo 'Test類1個參數的仿構造方法被調用<br/>';
//輸出參數值
echo '其值爲:'.$a1.'<br/><br/>';
}
function __construct2($a1,$a2){
echo 'Test類2個參數的仿構造方法被調用<br/>';
echo '其值爲:'.$a1.'、'.$a2.'<br/><br/>';
}
function __construct3($a1,$a2,$a3){
echo 'Test類3個參數的仿構造方法被調用<br/>';
echo '其值爲:'.$a1.'、'.$a2.'、'.$a3.'<br/><br/>';
}
}
//測試
new Test('你');
new Test('你','好');
new Test('你','好','啊');
測試結果爲:
說明:以上方法非個人原創,是PHP官方教程中的高票大神分享出來的,所以我只是充當翻譯而已,此處提供鏈接。