Использование PHPStan помогает улучшить качество PHP-кода, особенно в проектах на Symfony, Doctrine и Laravel. Однако для обеспечения долговечности проекта необходимо внедрять дополнительные правила статического анализа. Это включает в себя высокое покрытие типами, качественное тестирование и автоматическое применение правил через CI.
A. Правила для ясного внедрения зависимостей
NoRequiredOutsideClassRule: Запрещает использование атрибута
#[Required] в трейтах, чтобы избежать сильной связности и сложночитаемого кода. Рекомендуется использовать явное внедрение через конструктор.NoAbstractControllerConstructorRule: Абстрактные контроллеры не должны иметь конструкторы, чтобы избежать жесткой связности и сложностей при наследовании. Вместо этого следует использовать атрибут
#[Required] для внедрения зависимостей.NoConstructorAndRequiredTogetherRule: Запрещает одновременное использование конструктора и атрибута #[Required] в одном классе. Необходимо выбрать один способ внедрения зависимостей.
NoFindTaggedServiceIdsCallRule: Предотвращает использование метода
findTaggedServiceIds(), предлагая вместо этого использовать автоконфигурацию через атрибуты или теги в конфигурации.NoGetInControllerRule: Запрещает использование метода
$this->get() в контроллерах, поощряя внедрение зависимостей через конструктор.B. Унификация маршрутизации
NoRoutingPrefixRule: Избегает использования префиксов в маршрутах, чтобы обеспечить прозрачность и единообразие определения путей.
NoClassLevelRouteRule: Предотвращает использование маршрутов на уровне класса, предлагая определять пути непосредственно в атрибутах методов для лучшей читаемости и поддержки.
C. Подписчики событий
NoListenerWithoutContractRule: Поощряет использование интерфейса
EventSubscriberInterface вместо слушателей, чтобы хранить метаданные внутри класса и уменьшить объем конфигурации.NoStringInGetSubscribedEventsRule: Требует использования ссылок на классы событий в методе
getSubscribedEvents(), что облегчает обновление и улучшает поддержку IDE.👉Читать статью