PHP多個構造方法使用

PHP不可以定義多個構造方法的原因是:

由於PHP是弱類型語言,因此函數的輸入參數類型無法確定(可以使用類型暗示,但是類型暗示無法用在諸如整型,字符串之類的標量類型上),並且對於一個函數,比如只定義了3個輸入參數,PHP卻運行調用的時候輸入4個或者更多的參數。因此基於這2點,註定了PHP中無法重載函數,(類似Javascript語言),也無法有構造函數的重載。--轉自此博客


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官方教程中的高票大神分享出來的,所以我只是充當翻譯而已,此處提供鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章