ホームページ  >  記事  >  バックエンド開発  >  PHP は複数の構築されたメソッドを使用します

PHP は複数の構築されたメソッドを使用します

小云云
小云云オリジナル
2018-03-21 11:13:321385ブラウズ

PHP が複数のコンストラクターを定義できない理由は、PHP は型指定が弱い言語であるため、関数の入力パラメーターの型を決定できないことです (型ヒントは使用できますが、整数や文字列などのスカラーには型ヒントを使用できません)。 type)、たとえば関数の場合、入力パラメータは 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。