检查类在 PHP 中是否有方法


Check if class has method in PHP

目前我的代码看起来像这样:

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

我想做的是,检查调用$_POST['operation']的方法是否存在:如果是,则调用它,否则回显"错误"可能吗?我该怎么做?

您可以使用

method_exists:

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

虽然我强烈建议你不要以这种方式编程......

您可以使用is_callable()或method_exists()。

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

使用 method_exists()

method_exists($obj, $method_name);
您可以使用

method_exists() .但这是一个非常糟糕的主意

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