Объяснение правила PHP Code Sniffer PEAR.Files.IncludingFile.UseRequireOnce

я пытаюсь улучшить свой стиль кодирования, поэтому я начинаю использовать PHP Code Sniffer, чтобы следовать стандартам. Меня смущает это правило «PEAR.Files.IncludingFile.UseRequireOnce», что не так с include_once? Является ли серьезным нарушением стандарта подавление этого запаха?

Спасибо за ваши ответы и советы.


person ETNyx    schedule 10.08.2016    source источник


Ответы (2)


Нет «правильного» ответа, это то, что вы хотите, чтобы ваши стандарты кодирования были.

Лично я бы использовал правило, которое помечало «require_once» как неверное, поскольку оно точно такое же, как и include_once, без возможности проверить результат на наличие ошибок. Фатальная ошибка из-за того, что класс не найден, или фатальная ошибка из-за сбоя require_once не имеют шансов на корректное восстановление в PHP.

person chugadie    schedule 10.08.2016

Цитирование другого ответа: введите здесь описание изображения

Так что я предпочитаю require_once, потому что я знаю, когда файл отсутствует. Также вы можете использовать file_exists(), если загрузка файла необязательна, чтобы держать ее под контролем.

person Tomas Votruba    schedule 03.05.2017
comment
Я думаю, это зависит от ситуации. Я предпочитаю включать, потому что это не фатально. В любом случае вопрос был о нарушении стандарта кодирования PEAR. Как я полагаю, теперь это правило существует, потому что в идеальном мире все работает идеально, поэтому наше требование/включение не терпит неудачу. Когда это требует силы, чтобы исправить это больше, чем включить, это более строго :-) :-) - person ETNyx; 03.05.2017
comment
Мое последнее замечание тоже не фатально :). Наличие file_exists() деформации вокруг require_once в коде предотвращает такой вопрос, поскольку знания воплощены в коде, а не в архивах stackoverflow. Кстати, просто интересно. Вы начали использовать CodeSniffer и PHP-CS-Fixer? - person Tomas Votruba; 04.05.2017
comment
Просто CodeSniffer, это часть процессов непрерывной интеграции (CI), даже для небольшого проекта, где phpcs - это только одна работа в CI :-D Почему-то мне не подходит фиксер, так как он не может исправить все ошибки и предупреждения, которые я выдаю :-D. - person ETNyx; 04.05.2017
comment
Вы, наверное, очень хороши: D Я использую оба, я очень ленив: github.com/Symplify/EasyCodingStandard/blob/master/ - person Tomas Votruba; 04.05.2017