Подтвердить что ты не робот

PSR-1 2.3 Правило побочных эффектов

У меня есть вопрос, касающийся базовых стандартов кодирования PHP PSR1. PSR 1 Правило 2.3 гласит:

Правило 2.3 Побочные эффекты

Файл ДОЛЖЕН объявлять новые символы (классы, функции, константы,
и т.д.) и не вызывают никаких других побочных эффектов, или СЛЕДУЕТ выполнять логику со стороны
эффекты, но НЕ ДОЛЖНЫ делать оба.

Фраза "побочные эффекты" означает выполнение логики, не связанной напрямую с объявление классов, функций, констант и т.д., просто из включения     файл.

"Побочные эффекты" включают, но не ограничиваются: генерирование вывода, явное использование "require" или "include", подключение к внешним службам, изменение ini настройки, испускание ошибок или исключений, изменение глобальных или статических переменных,
чтение или запись в файл и т.д.

Может кто-нибудь дать мне аргумент, который поддерживает использование этого правила? Или объясните преимущества этого правила и почему это важно или хорошая идея для реализации. Это поможет мне поддерживать полную реализацию PSR 1 и сделать хороший пример.

4b9b3361

Ответ 1

Идея состоит в том, что когда класс загружается автоматически, состояние приложения не должно меняться. Любой модифицирующий состояние код (фактически исполняемый код) должен находиться в другом наборе файлов.

Это делает его предсказуемым и заставляет вас сохранять свою логику в методах класса и неявно.

Помните, что существуют стандарты кодирования, поэтому люди кодируют аналогичный стиль. Преимущество в принятии стандарта кодирования заключается в том, что ваша кодовая база является самосогласованной и совместимой с другими проектами, следуя правилам.

PSR-1 в значительной степени следует за тем, что все уже делали. Если вы чувствуете необходимость выполнять логику в том же месте, где определен класс, то, скорее всего, будет лучшее место или подход.

Наконец, не принимайте PSR-1 ради. Если у вас есть веская причина не следовать правилам в определенных местах, нарушите правила. Это не законы. Здравый смысл господствует.

Источник: я являюсь одним из участников этого документа.