TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #5397 2.87K
Кастомные правила PHPStan для улучшения проектов Symfony

Использование 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.

👉Читать статью
  • 🔥 6
  • ❤ 2
More from @phpproglib
  1. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  2. Sep 30, 2026🐸 Библиотека пхпшника
  3. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  4. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  5. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
  6. Sep 25, 2026🌞 PHP умеет искать в массиве без foreach В PHP 8.4 появились array_find(), array_find_key…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →