目前我的代码看起来像这样:
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()),您的代码仍将爆炸。最好使用允许的函数名称数组。