2015-01-09 69 views
-1

我要調用一個方法,當我有這樣的事情:call_user_func_array不是爲我工作

class foo { 
    function bar($arg, $arg2) { 
     echo __METHOD__, " got $arg and $arg2\n"; 
    } 
} 

它的工作,但我有一個庫類,它包含很多類。

例如調用類foo和方法吧我叫下面:

$core->FOO->bar(1, 2); 

當我現在嘗試

call_user_func_array(array($core, "FOO", "bar"), array(1, 2)); 

I get following error: 

Warning: call_user_func_array() expects parameter 1 to be a valid callback, 
array must have exactly two members 

任何想法如何,我可以解決我的問題?

編輯:

謝謝你們的幫助,我在你的幫助解決了這個問題。 我打電話

all_user_func_array(array($core->FOO,"bar"), array(1, 2)); 
+2

你看了錯誤信息? 「...參數1是有效的回調」。你沒有傳遞有效的回調。您正在傳遞一個包含三個成員的數組... – 2015-01-09 18:41:51

+1

作爲對'foo'的'bar'方法的回調,您如何獲得'array($ core,「FOO」,「bar」)?爲什麼'FOO'大寫,當類名是小寫? – 2015-01-09 18:41:55

+2

使用數組($ core-> FOO,'bar')作爲第一個參數。 – prodigitalson 2015-01-09 18:43:21

回答

-2

它應該是這樣的:

$foo = new foo; 
call_user_func_array(array($foo, "bar"), array("arg1", "arg2")); 
+0

不建設性,因爲他試圖通過魔術方法訪問自動加載的類__get – geggleto 2015-01-09 18:45:28

+1

@LuckyBurger - OP在哪裏提及任何自動加載器?不管它是否自動加載,它都沒有什麼區別 – 2015-01-09 18:46:16

+0

「我有一個庫類,它包含很多類。」這與Code-Igniter的工作方式類似。 @prodigitalson有正確的答案。 – geggleto 2015-01-09 18:46:59