2013-12-12 7 views
3

Я использую PHP Mess Detector 1.5.0 и имею ряд проблем, которые я не считаю проблемами.PHPMD - Избегайте использования статического доступа к классу - с использованием константы?

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

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

В этом коде я затем использую константы, похожие на перечисления в C++, для работы с параметрами. Поэтому, если я хочу что-то добавить, я передаю FOO :: ADD в свой код классу, который совпадает с 1.

Я могу проверить этот класс без проблем в PHPUnit, поскольку я проверяю константы, то я могу передать значения и константы в функции.

Я не уверен, почему PHPMD будет жаловаться на это, тем более что это значение const, на которое безопасно ссылается PHP.

ответ

2

Поскольку я использую много самости :: для констант, изменить phpmd код принять себя :: и родителей ::.

В программе PHP/PMD/Rule/CleanCode/StaticAccess.php в строке 36, изменение:

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

Я думал об этом, но тогда я должен расшириться и поддерживать свою собственную PHPMD, если инструмент может измениться, тогда он будет в обычном коде и полезен. –

+0

Согласен. Это похоже на обходной путь. –