2013-07-29 11 views
-1

我開始學習PHP中的oop,我想知道接受多個參數的方法有什麼問題。在PHP中有多個參數的函數

class Database 
{  
    public function __call($method, $args) 
    { 
     if($method == 'insertData') 
     { 
      if(count($args) == 2) 
      { 
       return call_user_func_array(($this, 'insertData1'), $args)); //unexpected token ',' after $this 
      } 
      else if(count($args) == 3) 
      { 
       return call_user_func_array(($this, 'insertData2'), $args)); 
      } 
     } 
    } 

    public function insertData1($table, $field1) 
    { 

    } 

    public function insertData2($table, $field1, $field2) 
    { 

    } 
} 
+0

此問題似乎是脫離主題,因爲修復語法錯誤是一件微不足道的事情。 '($ this,'insertData1')'不是[有效的回調符號](http://de1.php.net/manual/en/language.types.callable.php)。 – Gordon

+0

是不是隻能觸發不可訪問的方法,所以甚至不會在這種情況下被調用,因爲這兩種方法都是公開的? – Aeveus

+0

@JackieXu OP顯然只調用'insertData'。 – Gordon

回答

1

您從方法調用缺陣:

call_user_func_array(array($this, 'insertData1'), $args); 
1

的第一個參數call_user_func_array必須是一個可調用的,或者在你的情況下,一個數組:

call_user_func_array(array($this, 'insertData1'), $args)); 

代替:

call_user_func_array(($this, 'insertData1'), $args));