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