PHPMD - 避免使用静态访问类 - 使用常量?

时间:2013-12-12 19:19:20

标签: php codesniffer phpmd

我正在使用PHP Mess Detector 1.5.0,并且有很多问题,我认为不是问题。

class FOO
{
    const NEW_LINE = "\n";
    const ADD = 1;
    const DELETE = 2;
    ...

    public function __construct($OptionOne = self::ADD)
    {
    }
}

在这段代码中,我然后使用类似于C ++枚举的常量来处理选项。因此,如果我想添加某些内容,我会将代码中的FOO :: ADD传递给类,该类与1相同。

我可以在PHPUnit中测试这个类没有问题,因为我验证了常量,然后我可以将值和常量传递给函数。

我不确定为什么PHPMD会抱怨这一点,特别是因为它是在PHP中安全引用的const值。

1 个答案:

答案 0 :(得分:2)

因为我对常量使用了很多 self :: ,所以更改phpmd代码以接受 self :: parent :: 。< / p>

在第36行的PHP / PMD / Rule / CleanCode / StaticAccess.php程序中,更改为:

if ($this->isReferenceInParameter($reference)
    || $reference->getImage() === 'self' 
    || $reference->getImage() === 'parent' 
    ) {
    continue;
}