2010年4月17日

[PHP-users 35113] Re:抽象メソッドの引数を可変長にしたい

御返答ありがとうございます。

(2010年04月17日 21:34), php-users@xxxxx wrote:
>> 1. 抽象メソッドの引数を可変長にするにはどうすればよいか
>>
> 「php 可変長引数リスト」で検索してみてください。
>

fung_get_args 関数については一応理解しているつもいです。
ただ、今私が書こうとしているコードでは、問題が起こります。

public function execute()
{
$args = func_get_args();
for ($i = 0; $i < 3; $i++)
{
$result = call_user_func_array(array($this, 'process'), $args);
}
}

abstract protected function process();

上記のコードは、「どんな処理もリトライする」ための抽象クラスです。
(簡略化しています)
これを継承し、リトライしたい処理を process() メソッドに定義して使います。

execute() メソッドは process() メソッドを 3 回繰り返します。
その際、execute() メソッドが受け取った引数をそのままの形で process() メ
ソッドに渡したいので、
call_user_func_array() を使っております。

process() メソッドでも、call_user_func() を使って実装すればできるとは思
うのですが、
何となくスマートでないような気がしています。

>> 2. そもそも上記のエラーは、「引数の個数が違うから発生した」という認識で
>> 正しいのか
>>
> 定義と実装が違うということですよね。
>

「引数の個数」も「定義」に含まれるということですよね。


難しそうであれば、「抽象メソッドを定義しない」という方法を取ることもでき
ますが、
もし何か方法があるのであれば、知りたいと思っている次第です。

引き続き、よろしくお願いします。

Yuya Takeyama
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年4月17日 22:14
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/95170
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。