【问题标题】:PHPMD - Avoid using Static Access to class - Using a constant?PHPMD - 避免使用静态访问类 - 使用常量?
【发布时间】:2013-12-12 19:19:20
【问题描述】:

我正在使用 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 值。

【问题讨论】:

    标签: php codesniffer phpmd


    【解决方案1】:

    因为我用了很多self::作为常量,把phpmd代码改成接受self::parent::

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

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

    【讨论】:

    • 我想过,但是我必须分支并维护自己的PHPMD,除非工具可以改变,否则它将在常规代码中并且有用。
    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2017-11-01
    • 2020-11-02
    相关资源
    最近更新 更多