[PHP-users 31656] Re: インスタンス前にメンバ関数を変数で呼び出したい

KOYAMA Tetsuji koyama @ hoge.org
2007年 3月 9日 (金) 15:55:53 JST


小山です。

On 3/9/07, 斉藤 <m-saitoh @ yamatosokki.co.jp> wrote:
> クラスのインスタンスを生成する前にメンバ関数を実行したいのですが、
> クラス名に変数を使用すると Parse error になってしまいます。

PHP用語的には「メンバ関数」ではなく「クラスメソッド」ですね。

> [サンプルコード]
> ----------------------------------------------
> <?php
> class HOGE_C {
>    public $hoge = 'public hoge';
>    function hoge_m($h) {
>        echo 'method hoge_m ' . $h . '<br />';
>    }
> }
> $m = 'hoge_m';
> $c = 'HOGE_C';
>
> HOGE_C::hoge_m('1111');
> HOGE_C::$m('2222');
> $c::hoge_m('3333');
> ?>

変数になっているクラス名やメソッド名を呼び出すには
call_user_func() 関数を使用します。

call_user_func(array('HOGE_C', $m), '2222');
call_user_func(array($c, 'hoge_m'), '3333');

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


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