鉴于此课程:
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语句的方法,传入burrito或taco,然后从那里调用正确的方法。但是我必须从头开始知道结束,我可能有很多方法,而且我不必每次都更新switch语句。
谢谢!
答案 0 :(得分: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";
}
}
}
您可以使用$ lunch-> order('burrito');来调用它,这对我来说看起来更干净。它把所有的丑陋都放在了方法Tacobell :: order。
中答案 1 :(得分:3)
$lunch->{'order_' . $myOrder}();
我同意这个设计有点不确定,但这至少是如何做到的。
答案 2 :(得分:2)
答案 3 :(得分:0)
足够简单
$order = 'order_burrito';
$lunch->$order();