2017-05-22 1 views
1

と呼ばれ、私は、これと同じ質問があります:PHP can I call unexistent function with call_user_funcPHP:メソッド_CALLで定義されており、call_user_func_array

を私は幅__call定義されたメソッドを呼び出す必要がありますが、私は渡すどのように多くのパラメータを知りません。だから私はこれを使用しています:

call_user_func_array(array($object, $method_name), $arguments); 

しかし、それは動作しません。 実は、この作品:

$object->$method_name($arguments[0], $arguments[1], $arguments[2] /*,... until no more args*/); 

:私はのようなものをwan't

$object->$method_name(); 

をしかし、私はcall_user_func_array他の方法でパラメータを渡す方法がわからない...

アイデア ? ありがとうございます

+0

「__call()」メソッドをどのように定義したかを[質問の編集](https://stackoverflow.com/posts/44116002/edit)で表示してください。 –

+1

_しかし、動作しません。本当に、エラー、スパーク、漏れは何ですか? – AbraCadaver

+0

私はとても愚かです...それは価値を得るためでした。実際には何もしませんでした。今、私のcall_user_funcの前にリターンを置くのが理にかなっているようです...あなたは何を知っていますか?できます !どうもありがとうございました –

答えて

1

これは完全に可能です。私はあなたのコードを知らないが、ここで私はそれが動作を確認するために一緒に入れて簡単なテストです:

class Foo { 
    function _bar($arg1, $arg2) { 
     print_r(func_get_args()); 
    } 

    function __call($name, $args) { 
     call_user_func_array([$this, '_'.$name], $args); 
    } 
} 

$foo = new Foo(); 
$func = 'bar'; 

call_user_func_array([$foo, $func], ['1', '2']); 

// Array 
// (
//  [0] => 1 
//  [1] => 2 
//) 

これはFoo::__call()で終わるので、存在しない機能Foo::bar()を呼び出そうとし、その次にFoo::_bar()を呼び出します。

関連する問題