检查类是否在PHP中有方法

时间:2012-04-23 20:30:56

标签: php oop class methods

目前我的代码如下:

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

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

4 个答案:

答案 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()

method_exists($obj, $method_name);

答案 3 :(得分:3)

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

如果将$_POST['operation']设置为某些魔术函数名称(例如__set()),则代码仍会爆炸。最好使用一系列允许的函数名称。