PHP,Bitwise运算符和使用包含或作为启用选项的参数

时间:2013-06-10 16:42:39

标签: php bit-manipulation

有没有办法用true或false定义一些变量,并将它们作为参数一起传递给函数,就像在C ++中一样,使用按位包含的方式打开或关闭函数的各个部分或者... :

// Declare

define( "ADMIN", TRUE);
define( "CLIENT", TRUE);

function Authenticated( $flags )
{
    // Not sure what would go here ? but something like
    // If ADMIN then
    // If CLIENT then
    // If ADMIN | CLIENT then
}

// Call

Authenticated( ADMIN | CLIENT );

2 个答案:

答案 0 :(得分:0)

define("ADMIN", 0x0001);
define("CLIENT", 0x0002);

现在您可以将它们用作实际bitflags

答案 1 :(得分:0)

您可以在类中定义常量,并确保它们的值是单独的位:

class Authentication
{
    const ADMIN  = 0x0001;
    const CLIENT = 0x0002;
}

function Authenticated($flags)
{
    $adminFlag = $flags & Authentication::ADMIN;
    $clientFlag = $flags & Authentication::CLIENT;

    if ($adminFlag && $clientFlag) ...
    else if ($adminFlag) ...
    else if ($clientFlag) ...
}