2

重複の可能性:
PHP、引数のリストとして func-get-args 値を別の関数に渡す方法は?

基本クラスに任意の数の引数を取ることができるメソッドがあります。このメソッドは、最初のメソッドに渡された引数を使用して任意の数の引数を取ることができるサードパーティ オブジェクトのメソッドを呼び出す必要があります。

呼び出されたメソッドのシグネチャを変更して配列またはオブジェクトを受け入れることができないという制約を強化するために呼び出されるのは、サードパーティ オブジェクトであることに言及します。

例:

<?php
class Example {     

    private $thirdPartyObject = null;

    public function methodOne() {
        $arguments = func_get_args();

        $this->thirdPartyObject = new ThirdPartyObject();
        $this->externalObject->methodName(/* pass on variable number of arguments here */);
    }
}

$exampleObject = new Example();
$exampleObject->methodOne('a', 'b', 'c');


に渡される引数の数が事前にわかっている場合はExample->methodOne()、同じ数の引数を に渡すことができますThirdPartyObject->methodName()

に渡される引数の数が事前にわからない場合、Example->methodOne()これらの引数を に渡すことができThirdPartyObject->methodName()ますか?

この場合、ThirdPartyObject->methodName()次のような 1 つ以上の引数を指定して呼び出されます。

<?php
$thirdPartyObject = new ThirdPartyObject();
$thirdPartyObject->methodName('a');
$thirdPartyObject->methodName('a', 'b');
$thirdPartyObject->methodName('a', /* ... */, 'N');
4

4 に答える 4

3

あなたはcall_user_func_array ()について話していると思います。しかし、それを使用することは良い習慣ではありません。かなり遅いです。

call_user_func_array(array($this->externalObject, "methodName"), $arguments);
于 2012-07-16T15:12:23.197 に答える
1

はい、call_user_func_array()次のように使用します。

$this->thirdPartyObject = new ThirdPartyObject();
call_user_func_array( array( $this->externalObject, 'methodName'),  $arguments);
于 2012-07-16T15:13:50.703 に答える
0

使用できますcall_user_func_array

ただし、単純に引数の配列 ( $arguments) を渡し、それを他のメソッドで利用する必要があります。

于 2012-07-16T15:12:07.250 に答える
-1

クラス Example extends ThirdPartyObject を使用してから、渡したい変数のデフォルト値を設定してみてください。

于 2012-07-16T15:13:24.030 に答える