21

現在、私のコードは次のようになっています。

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

私がしたいのは、呼び出されたメソッドが存在するかどうかを確認することです$_POST['operation']。存在する場合はそれを呼び出し、そうでない場合はecho "error"可能ですか?これどうやってするの?

4

4 に答える 4

42

method_existsを使用できます:

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

この方法でプログラミングしないことを強くお勧めしますが...

于 2012-04-23T20:32:51.767 に答える
13

is_callable()またはmethod_exists( )を使用できます。

それらの違いは__call()、メソッド呼び出しを処理する場合、後者はその場合には機能しないということです。

于 2012-04-23T20:32:55.617 に答える
6

使用するmethod_exists()

method_exists($obj, $method_name);
于 2012-04-23T20:33:01.663 に答える
4

を使用できますmethod_exists()しかし、これは本当に悪い考えです

$_POST['operation']がいくつかの魔法の関数名(__set()など)に設定されている場合でも、コードは爆発します。許可された関数名の配列を使用することをお勧めします。

于 2012-04-23T20:37:58.750 に答える