Ответ 1
Вы можете использовать method_exists:
if (method_exists($db_manager, $_POST['operation'])){
$db_manager->{$_POST['operation']}();
} else {
echo 'error';
}
Хотя я сильно советую вам не заниматься программированием таким образом...
В настоящее время мой код выглядит следующим образом:
switch ($_POST['operation']) {
case 'create':
$db_manager->create();
break;
case 'retrieve':
$db_manager->retrieve();
break;
...
}
Что я хочу сделать, чтобы проверить, существует ли метод под названием $_POST['operation']
: если да, то назовите его, иначе echo "error" Возможно ли это? Как я могу это сделать?
Вы можете использовать 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()), ваш код все равно будет взрываться. Лучше использовать массив разрешенных имен функций.