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

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

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

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

Solutions Collecting From Web of "Проверьте, имеет ли класс метод PHP"

Вы можете использовать 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 () ), ваш код все равно будет взрываться. Лучше использовать массив разрешенных имен функций.