PHP 7 "объявление ... должно быть совместимо" для типов аргументов - PullRequest
0 голосов
/ 12 ноября 2018

Я использую фреймворк, метод которого определил что-то вроде

class Abc {
  public function doThis($what) {
    ...
  }
}

Так как я использую PHP 7 и также поклонник PHP codesniffer, он говорит мне определять типы аргументов функции, которые говорят, что янаписал класс в моем коде: -

class Pqr extends Abc {
  public function doThis(string $what) {
    ...
  }
}

Этот код дает мне предупреждение Объявление Pqr :: doThis (строка $ what) должно быть совместимо с Abc :: doThis ($ what)

Похоже, PHP обрабатывает $ what в классе Abc по-другому (не как строка).Так как Abc является частью фреймворка, и я ничего не могу с этим поделать.Я не хочу удалять типы аргументов в моем коде и хочу, чтобы cngode был более строгим.Отключение всех предупреждений было бы плохой идеей.

Что-нибудь лучше, мы должны решить эту проблему?

1 Ответ

0 голосов
/ 12 ноября 2018

Code Sniffer вполне может указывать вам что-то делать, и вы, возможно, захотите последовать его совету, но если ваша структура этого не делает, вы, возможно, тоже не сможете этого сделать.Вы не можете диктовать правила кода структуре;Вы должны жить с тем, что вам навязывают, даже если это противоречит правилам Code Sniffer.

Мой совет - просто игнорировать эту проблему.Code Sniffer - отличный инструмент, и его совету стоит следовать, но бывают случаи, когда вы просто не можете этого сделать.

Если ваша цель - заставить вашу систему показывать ноль предупреждений Code Sniffer, то выэто можно сделать, добавив в код явные маркеры, указывающие Code Sniffer игнорировать определенные правила в различных точках кода.Code Sniffer имеет возможность игнорировать разделы кода;это описано на странице документации Advanced Usage .

...