如何从具有变量的类中调用方法?

Rya*_*nce 2 php oop variable-variables

鉴于此类:

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();
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

$myOrder = 'burrito';
$lunch->order_.$myOrder;
Run Code Online (Sandbox Code Playgroud)

显然代码是下铺 - 但显示我试图做的比试图解释它更好.

也许我说这一切都错了.我想到了一个带有switch语句的方法,传入burrito或taco,然后从那里调用正确的方法.但是我必须从头开始知道结束,并且我可能有很多方法,而且我不必每次都更新switch语句.

谢谢!

rod*_*ion 5

这样的事怎么样?

class Tacobell {
    public function order_burrito() {
         echo "Bladibla.\n";
    }

    public function order($item) {
        if (method_exists($this, "order_$item")) {
            $this->{'order_' . $item}();
        } else {
            echo "Go away, we don't serve $item here.\n";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以用$ lunch-> order('burrito')来调用它,这对我来说看起来更干净.它把所有的丑陋都放在方法Tacobell :: order中.