0

例:

$var = 'post_type_archive';
$name = 'some-archive';
$condition = 'is_'.$var;
if($condition($name)) 

それは大きな太ったノーノーと見なされますか?もしそうなら、他にどのように同様のことを達成できますか?

4

3 に答える 3

1

そうする場合は、動的に作成された関数名が常に有効であることを確認する必要があります。そうしないと、実行時に致命的なエラーが発生します。少なくとも、is_callable()関数が存在することを確認するために使用する必要があります。

于 2012-08-19T22:58:30.833 に答える
1

使用を特定のケースに限定することは悪い習慣ではありません。これらのケースの 1 つは、指定された GET パラメーターに基づいて関数を動的に呼び出す場合です。

しかし、call_user_func()代わりに使用することをお勧めします。何をしようとしているのかが明確になり、コードがはるかに読みやすくなります。で関数の存在を常に確認することを忘れないでくださいis_callable()

call_user_func()ただし、組み込み関数では機能しません。

于 2012-08-19T22:58:37.820 に答える
1

時々、これを行う必要があります。コメンターが言ったように、読みやすさの問題になりやすいため、実際に必要な場合にのみ実行するようにしてください. 呼び出される可能性のある関数のリストが短い場合は、代わりに switch ステートメントを使用することを検討してください。

于 2012-08-19T22:47:59.550 に答える