PHP가 다중 생성자를 정의할 수 없는 이유는 PHP가 약한 유형의 언어이기 때문에 함수의 입력 매개변수 유형을 결정할 수 없기 때문입니다(유형 힌트를 사용할 수 있지만 정수 및 문자열과 같은 스칼라에는 유형 힌트를 사용할 수 없습니다). type), 예를 들어 함수의 경우 입력 매개변수가 3개만 정의되어 있지만 PHP는 호출 시 매개변수를 4개 이상 입력합니다. 따라서 이 두 가지 점을 토대로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!