将多个定义或const作为参数传递给类方法

时间:2012-03-10 05:06:56

标签: php

我可以这样做吗?

class Test
{
    const FLAG1 = 'flag1.';
    const FLAG2 = 'flag2.';

    public function __construct() {}

    public function myMethod($flags)
    {
        echo $flags
    }
}

然后像

一样使用它
$test = new Test();
$test->myMethod(Test::FLAG1|Test::FLAG2);

我尝试使用此示例,但我将2作为echo。 我很想知道如何使用CONSTDEFINE作为方法的参数。

我问,因为我发现这个脚本使用了这种技术,我发现它很好奇

http://www.pgregg.com/projects/php/preg_find/preg_find.php.txt

1 个答案:

答案 0 :(得分:2)

是的,这是可能的,但不是现在的标志值。

按位运算符工作......好吧,比特。如果我1001 OR 0110,我会1111。因此,如果您希望能够使用这样的常量,则它们的值必须是2的幂。

const FLAG1 = '1';
const FLAG2 = '2';
const FLAG3 = '4';

然后,您可以通过AND测试方法,将函数的参数值作为掩码。例如,如果有人通过了FLAG1|FLAG2,您可以测试标志2:0011 AND 0010 = 0010等于FLAG2。在PHP中,这将是($flags & FLAG2) == FLAG2以获取是否传递FLAG2的布尔值

您可以在此处查看所有按位运算符:http://php.net/manual/en/language.operators.bitwise.php

我还应该指出,这通常被认为是PHP编程的不良形式。为什么有更好的方法来传递多个参数呢?就个人而言,我只是接受一个数组。

这有意义吗?如果没有,请提出更详细的问题,我会跟进。