PHP が複数のコンストラクターを定義できない理由は、PHP は型指定が弱い言語であるため、関数の入力パラメーターの型を決定できないことです (型ヒントは使用できますが、整数や文字列などのスカラーには型ヒントを使用できません)。 type)、たとえば関数の場合、入力パラメータは 3 つだけ定義されていますが、PHP は呼び出し時に 4 つ以上のパラメータを入力します。したがって、これら 2 つの点に基づいて、PHP では (JavaScript 言語と同様に) 関数のオーバーロードができず、コンストラクターのオーバーロードもできないことになります。
PHP の構築メソッドは Java の構築メソッドとは異なります。複数の構築メソッドは使用できません。Java のような構築メソッドの使用を実装したい場合は、次のメソッドを使用できます。
[ php] view plain copy
//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 は複数の構築されたメソッドを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。