PHP不可以定義多個建構方法的原因是:由於PHP是弱型別語言,因此函式的輸入參數型別無法確定(可以使用型別暗示,但型別暗示無法用在諸如整型,字串之類的標量類型上),且對於一個函數,例如只定義了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中文網其他相關文章!