目前我的代码如下:
switch ($_POST['operation']) {
case 'create':
$db_manager->create();
break;
case 'retrieve':
$db_manager->retrieve();
break;
...
}
我想要做的是,检查名为$_POST['operation']
的方法是否存在:如果是,则调用它,否则回显“错误”是否可能?我怎么能这样做?
答案 0 :(得分:37)
您可以使用method_exists:
if (method_exists($db_manager, $_POST['operation'])){
$db_manager->{$_POST['operation']}();
} else {
echo 'error';
}
虽然我强烈建议你不要这样编程......
答案 1 :(得分:11)
您可以使用is_callable()或method_exists()。
如果__call()
处理方法调用,则它们之间的区别在于后者不适用于该情况。
答案 2 :(得分:4)
method_exists($obj, $method_name);
答案 3 :(得分:3)
您可以使用method_exists()
。 但这是一个非常糟糕的主意
如果将$_POST['operation']
设置为某些魔术函数名称(例如__set()),则代码仍会爆炸。最好使用一系列允许的函数名称。