[PHP-users 15853]Re: クラスメソッドと可変関数、コールバック(call_user_func)について

KOYAMA Tetsuji koyama @ hoge.org
2003年 6月 11日 (水) 18:28:35 JST


  小山です。

At Wed, 11 Jun 2003 17:48:53 +0900,
坂本さん wrote:
>  クラスメソッドと可変関数ではまってしまっています。
>  以下に示すようなコードを書いてみたのですが、エラーが発生してしまいます。
> 
> <?php
> class hoge {
>         function my_func1($func) {
>                 $func("bohe");
>         }
>         function my_func_core($str) {
>                 print("$str<br>\n");
>         }
>         function my_func_set() {
>                 $this->my_func1("my_func_core");
>         }
> }
> $obj_hoge = new hoge;
> $obj_hoge->my_func_set();
> ?>
> 
>  エラーメッセージは次に示すとおりです。
> Fatal error: Call to undefined function: my_func_core() in
> /home/c-hino/public_html/in_vitro/test_utils/method.php on line 4

  関数を動的に呼び出すのに、$func() という表記をするのがそもそも間違っ
てます。

>         function my_func1($func) {
>                 $func("bohe");
>         }

  ここは、インスタンスメソッドとして呼び出すなら

	call_user_func(array($this, $func));

ですし、クラスメソッドとして呼び出すなら

	call_user_func(array('hoge', $func));

としないと。

-- 
	小山 哲志@ビート・クラフト
	koyama @ beatcraft.com
	koyama @ hoge.org


PHP-users メーリングリストの案内