К основному содержанию
правило официальный · GitHub

php-symfony — правило для GitHub Copilot: стандарты Symfony

Правило задаёт Copilot стиль разработки на Symfony: структура проекта, DI, Doctrine, Twig и тесты. Пригодится, если не хочется объяснять агенту конвенции в каждом чате.

Установить в GitHub Copilot · Вручную: положить файлы Все способы и платформы ↓
.github/instructions/php-symfony.instructions.md
Открыть на GitHub

Что делает php-symfony

Файл применяется к **/*.php, **/*.yaml, **/*.yml, **/*.xml и **/*.twig, так что подсказки в этих файлах идут по правилам Symfony. Внутри — набор требований: стандартная структура каталогов, никаких бандлов под код приложения, конфигурация в config/, код в src/, шаблоны в templates/.

По сервисам правило жёсткое: только внедрение зависимостей, предпочтительно через конструктор, автовайринг и автоконфигурация, сервисы по возможности приватные, обращение через $container->get() не приветствуется. Контроллеры наследуют AbstractController и остаются тонкими, маршруты, кеш и безопасность настраиваются атрибутами, а сложные запросы уходят в репозитории.

Секреты вроде ключей API правило советует хранить через Symfony Secrets и не коммитить в репозиторий. Для конфигурации поведения приложения — параметры в config/services.yaml с префиксом app., а переменные окружения оставлены для инфраструктуры. Это повод проверить, не лежит ли у вас логика приложения в .env.

Какие задачи решает

  • удержать единый стиль кода в Symfony-проекте при генерации через Copilot
  • разложить сервисы по внедрению зависимостей вместо обращений к контейнеру
  • вынести бизнес-логику из контроллеров и Twig-шаблонов
  • настроить маппинг Doctrine через PHP-атрибуты и миграции
  • добавить функциональные тесты на WebTestCase и smoke-тесты публичных URL

Примеры запросов агенту

  • Добавь новый контроллер для списка заказов по правилам Symfony из инструкций
  • Отрефактори этот сервис: конструкторное внедрение зависимостей, приватный сервис
  • Проверь шаблон на бизнес-логику и перепиши по конвенциям Twig

Как установить php-symfony

Вручную: положить файлы

.github/instructions/php-symfony.instructions.md

Поле applyTo задаёт, к каким файлам применять

По шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать

Из того же набора674

Весь набор →
power-platform-connector Правило для GitHub Copilot, которое подсказывает, как писать JSON-схемы кастомных коннекторов Power Platform: Swagger 2.0, apiProperties и settings. ★ 40 418звёзд репо power-bi-devops-alm-best-practices Правило для GitHub Copilot: подсказывает агенту, как вести Power BI-проект в Git, собирать CI/CD и раскатывать отчёты по средам. ★ 40 418звёзд репо power-bi-custom-visuals-development Правило для GitHub Copilot, которое подсказывает агенту, как писать кастомные визуалы Power BI на React, D3.js и TypeScript. ★ 40 418звёзд репо playwright-typescript Правило задаёт Copilot стиль написания тестов Playwright: ролевые локаторы, автоожидание, единая структура файлов. Пригодится, если тесты пишет агент, а не человек. ★ 40 418звёзд репо pcf-tooling Правило подсказывает Copilot, что для сборки, отладки и деплоя код-компонентов нужен Microsoft Power Platform CLI. ★ 40 418звёзд репо pcf-manifest-schema Правило подсказывает Copilot структуру ControlManifest.Input.xml: какие элементы и атрибуты бывают и что они делают. Пригодится, когда правишь манифест PCF-компонента. ★ 40 418звёзд репо pcf-events Правило подсказывает Copilot, как объявлять и обрабатывать кастомные события в компонентах Power Apps Component Framework. ★ 40 418звёзд репо pcf-code-components Правило объясняет Copilot, как устроены code components в Power Apps component framework: манифест, реализация, ресурсы. Пригодится, когда правите ControlManifest.Input.xml или index.ts. ★ 40 418звёзд репо

Похожие

php-pro https://github.com/Jeffallan Задаёт правила разработки на PHP 8.3+ для Laravel и Symfony: включает strict_types, анализ в PHPStan на уровне 9 и тесты PHPUnit или Pest. CX Codex +1 15 500установок appwrite-php appwrite Скилл подсказывает агенту, как писать серверный PHP под Appwrite: пользователи, таблицы, файлы, функции. Пригодится в Laravel и Symfony. CX Codex +1 847установок aws-lambda-php-integration giuseppe-trisciuoglio Скилл подсказывает агенту, как развернуть PHP или Symfony на AWS Lambda через Bref: обработчики, слои рантайма, триггеры SQS/SNS и холодный старт. CX Codex +1 3 500установок sentry-php-sdk getsentry Помогает настроить мониторинг Sentry в проектах на чистом PHP, Laravel или Symfony. Распознаёт фреймворк, очереди и планировщики, после чего предлагает нужные пакеты и конфигурацию. CX Codex +1 2 200установок php-best-practices php-community Набор из 51 правила для проверки кода на PHP 8.0–8.5 по стандартам PSR, SOLID и строгой типизации. Пригодится при код-ревью и рефакторинге классов. CX Codex +1 3 700установок php-development Mindrally Скилл задаёт агенту правила написания PHP 8+ кода: SOLID, PSR-12, строгая типизация, тесты на PHPUnit. Пригодится, когда проект на PHP растёт и хочется единый стиль. CX Codex +1 1 100установок

Рядом в теме «Бэкенд и API»

Всё по теме «Бэкенд и API» →

Вопросы о php-symfony

Как установить php-symfony в GitHub Copilot?

Положите файл по пути .github/instructions/php-symfony.instructions.md. Правило подхватится по маске applyTo из frontmatter.

Что делает php-symfony?

Задаёт Copilot стандарты разработки на Symfony: структуру каталогов, внедрение зависимостей, работу с Doctrine, формы, валидацию, безопасность и тесты.

Какие файлы попадают под правило?

PHP, YAML, XML и Twig — по маске **/*.php, **/*.yaml, **/*.yml, **/*.xml, **/*.twig.

Исходный текст

php-symfony.instructions.md · MIT
---
description: "Symfony development standards aligned with official Symfony Best Practices"
applyTo: "**/*.php, **/*.yaml, **/*.yml, **/*.xml, **/*.twig"
---

# Symfony Development Instructions

Instructions for developing Symfony applications following the official Symfony Best Practices and core framework philosophy.

## Project Context
- Symfony (latest stable or LTS)
- Default Symfony directory structure
- Autowiring and autoconfiguration enabled
- Doctrine ORM when persistence is needed
- Twig for templating
- Symfony Forms, Validator, Security, Messenger as needed
- PHPUnit for testing
- Attribute-based configuration where supported

## Project Structure
- Use the default Symfony directory structure
- Do not create bundles for application code
- Organize application code using PHP namespaces
- Keep configuration in `config/`, application code in `src/`, templates in `templates/`

## Configuration

### Environment Configuration
- Use environment variables for infrastructure-related configuration
- Use `.env` files to define environment-specific values
- Do not use environment variables to control application behavior

### Sensitive Configuration
- Store secrets (API keys, credentials) using Symfony Secrets
- Never commit secrets to the repository

### Application Configuration
- Use parameters in `config/services.yaml` for application behavior configuration
- Override parameters per environment only when needed
- Prefix parameters with `app.` to avoid collisions
- Use short, descriptive parameter names
- Use PHP constants for configuration values that rarely change

## Services & Dependency Injection
- Use dependency injection exclusively
- Prefer constructor injection
- Use autowiring and autoconfiguration by default
- Keep services private whenever possible
- Avoid accessing services via `$container->get()`
- Use YAML as the preferred format for service configuration
- Use interfaces where it improves decoupling or clarity

## Controllers
- Extend `AbstractController`
- Keep controllers thin and focused on glue code
- Do not place business logic in controllers
- Use attributes to configure routing, caching, and security
- Use dependency injection for services
- Use Entity Value Resolvers when convenient and appropriate
- Perform complex queries explicitly via repositories when needed

## Doctrine & Persistence
- Use Doctrine entities as plain PHP objects
- Define Doctrine mapping using PHP attributes
- Use repositories for querying data
- Avoid putting business logic in repositories
- Use migrations for all schema changes

## Templates (Twig)
- Use snake_case for template names, directories, and variables
- Prefix template fragments with an underscore
- Keep templates focused on presentation
- Avoid business logic in Twig templates
- Escape output by default
- Avoid using `|raw` unless content is trusted and sanitized

## Forms
- Define forms as PHP classes
- Do not build forms directly in controllers
- Add form buttons in templates, not in form classes
- Define validation constraints on the underlying object
- Use a single controller action to render and process each form
- Define submit buttons in controllers only when multiple submits are required

## Validation
- Use Symfony Validator constraints
- Validate data at application boundaries
- Prefer object-level validation over form-only validation when reuse is needed

## Internationalization
- Use XLIFF for translation files
- Use translation keys instead of literal content strings
- Use descriptive keys that express purpose, not location

## Security
- Prefer a single firewall unless multiple systems are required
- Use the auto password hasher
- Use voters for complex authorization logic
- Avoid complex security expressions in attributes

## Web Assets
- Use AssetMapper to manage web assets
- Avoid unnecessary frontend build complexity unless required

## Asynchronous Processing
- Use Symfony Messenger for async and background tasks
- Keep message handlers small and focused
- Configure failure transports for failed messages

## Testing
- Write functional tests using `WebTestCase`
- Add smoke tests to ensure all public URLs respond successfully
- Hard-code URLs in functional tests instead of generating routes
- Use unit tests where appropriate for isolated logic
- Add more specific tests incrementally as the application evolves

## General Guidelines
- Prefer clarity over abstraction
- Follow Symfony conventions before introducing custom patterns
- Keep configuration explicit and readable
- Avoid premature optimization
- Use Symfony Demo as a reference implementation

© github · MIT · github/awesome-copilot

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой