2

このクラスを考えると:

class Tacobell{

    public function order_taco(){
        echo "3 Tacos, thank you.";
    }

    public function order_burrito(){
        echo "Cheesy bean and rice, please";
    }

}

$lunch = new Tacobell;
$lunch->order_burrito();
$lunch->order_taco();

どうすればこのようなことをすることができますか?

$myOrder = 'burrito';
$lunch->order_.$myOrder;

明らかに、そのコードはばかげていますが、説明しようとするよりも、私がやろうとしていることを示しています。

そして、多分私はこれについてすべて間違っています。switch ステートメントを使用したメソッドを考え、ブリトーまたはタコスを渡し、そこから適切なメソッドを呼び出します。しかし、最初から終わりを知る必要があり、潜在的に多くのメソッドを持っている可能性があり、毎回 switch ステートメントを更新する必要はありません。

ありがとう!

4

4 に答える 4

3
$lunch->{'order_' . $myOrder}();

私はデザインが少し不安定であることに同意しますが、それは少なくともそれを行う方法です.

于 2009-06-01T21:29:12.803 に答える
2

call_user_funcはあなたが探しているものだと思います:

http://us3.php.net/call_user_func

提案した文字列を渡すことができます。クラスのメソッドの呼び出しについては、例 #3 を参照してください。

于 2009-06-01T21:34:23.823 に答える
0

十分に単純

$order = 'order_burrito';
$lunch->$order();
于 2009-06-02T00:01:17.147 に答える