Подтвердить что ты не робот

Проверьте, имеет ли класс метод PHP

В настоящее время мой код выглядит следующим образом:

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

Что я хочу сделать, чтобы проверить, существует ли метод под названием $_POST['operation']: если да, то назовите его, иначе echo "error" Возможно ли это? Как я могу это сделать?

4b9b3361

Ответ 1

Вы можете использовать method_exists:

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

Хотя я сильно советую вам не заниматься программированием таким образом...

Ответ 2

Вы можете использовать is_callable() или method_exists().

Разница между ними заключается в том, что последний не будет работать для случая, если __call() обрабатывает вызов метода.

Ответ 3

Используйте method_exists()

method_exists($obj, $method_name);

Ответ 4

Вы можете использовать method_exists(). Но это действительно плохая идея

Если $_POST['operation'] задано несколько имен магической функции (например, __ set()), ваш код все равно будет взрываться. Лучше использовать массив разрешенных имен функций.