首頁  >  文章  >  後端開發  >  PHP使用多個建構的方法

PHP使用多個建構的方法

小云云
小云云原創
2018-03-21 11:13:321414瀏覽

PHP不可以定義多個建構方法的原因是:由於PHP是弱型別語言,因此函式的輸入參數型別無法確定(可以使用型別暗示,但型別暗示無法用在諸如整型,字串之類的標量類型上),且對於一個函數,例如只定義了3個輸入參數,PHP卻執行呼叫的時候輸入4個或更多的參數。因此基於這2點,注定了PHP中無法重載函數,(類似Javascript語言),也無法有建構函數的重載。

PHP的構造方法與Java的有所不同,不能有多個構造方法,只能有一個構造方法,若想要實作類似Java的構造方法的使用,可以使用下面的辦法來實現:

[php] view plain copy

  1. //PHP构造方法使用
    class Test{  
        function __construct(){  
            echo &#39;Test类无参构造方法被调用<br/>&#39;;  
            $a=func_get_args();  
            $i=func_num_args();  
            //判断Test类是否有__constructxx方法,将方法名记为$f
            if(method_exists($this,$f=&#39;__construct&#39;.$i)){  
                //若存在xx方法,使用call_user_func_array(arr1,arr2)函数调用他,该函数的参数为两个数组,前面的数组为调用谁($this)的什么($f)方法,后一个数组为参数
                call_user_func_array(array($this,$f),$a);  
            }  
        }  
        function __construct1($a1){  
            echo &#39;Test类1个参数的仿构造方法被调用<br/>&#39;;  
            //输出参数值
            echo &#39;其值为:&#39;.$a1.&#39;<br/><br/>&#39;;  
        }  
        function __construct2($a1,$a2){  
            echo &#39;Test类2个参数的仿构造方法被调用<br/>&#39;;  
            echo &#39;其值为:&#39;.$a1.&#39;、&#39;.$a2.&#39;<br/><br/>&#39;;  
        }  
        function __construct3($a1,$a2,$a3){  
            echo &#39;Test类3个参数的仿构造方法被调用<br/>&#39;;  
            echo &#39;其值为:&#39;.$a1.&#39;、&#39;.$a2.&#39;、&#39;.$a3.&#39;<br/><br/>&#39;;  
        }  
    }  
    //测试
    new Test(&#39;你&#39;);  
    new Test(&#39;你&#39;,&#39;好&#39;);  
    new Test(&#39;你&#39;,&#39;好&#39;,&#39;啊&#39;);


測試結果為:


相關推薦:

PHP語言建構器詳解

#js普通函數與建構子詳解

JavaScript建構器模式實例分析

以上是PHP使用多個建構的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn