おはようございます。PHPの関数のバイナリフラグ
私は、引数の数を増やすことなく、関数に複数のフラグを使用する方法を理解しようとしています。
たとえば、some_func(flag1 | flag2 | flag3)のように使用します。
は、今の私は
define('flag1', 1);
define('flag2', 2);
define('flag3', 4);
function flagtest($flags)
{
if ($flags & flag1)
echo 'flag1 is on, ';
if ($flags & flag2)
echo 'flag2 is on, ';
if ($flags & flag3)
echo 'flag3 is on, ';
}
flagtest(flag2 | flag3);
ようにそれを行なったし、それはフラグ2と3がオンになっていることをprings。
したがって、すべてが機能しています。しかし...私はそれを行うより良い方法があると確信しています...そうですか? 質問には、どうすればいいですか?私はそれのようなものを実装する適切な方法があると確信しています。
[複数の定義やconstをクラスメソッドのパラメータとして渡す]の複製が可能です(http://stackoverflow.com/questions/9644085/pass-multiple-defines-or-const-as-a-parameter-to -a-class-method) – Brad
@Brad、そうではありません:) – NewProger
Check http://www.shawnolson.net/a/601/setting_bits_and_flags_in_php.html –