21

目前我的代码如下所示:

switch ($_POST['operation']) {
    case 'create':
        $db_manager->create();
        break;
    case 'retrieve':
        $db_manager->retrieve();
        break;
...
}

我想要做的是,检查调用的方法是否$_POST['operation']存在:如果是则调用它,否则回显“错误”是否可能?我怎样才能做到这一点?

4

4 回答 4

42

您可以使用method_exists

if (method_exists($db_manager, $_POST['operation'])){
  $db_manager->{$_POST['operation']}();
} else {
  echo 'error';
}

虽然我强烈建议你不要这样编程......

于 2012-04-23T20:32:51.767 回答
13

您可以使用is_callable()method_exists()

__call()它们之间的区别在于,如果处理方法调用,后者不适用于这种情况。

于 2012-04-23T20:32:55.617 回答
6

利用method_exists()

method_exists($obj, $method_name);
于 2012-04-23T20:33:01.663 回答
4

您可以使用method_exists(). 但这是一个非常糟糕的主意

如果$_POST['operation']设置为一些神奇的函数名称(如__set()),您的代码仍然会爆炸。最好使用允许的函数名称数组。

于 2012-04-23T20:37:58.750 回答