Forge
markdowne8ad0934
1# Symfony Framework — фундамент (full stack, не только «под Laravel»)
2
3**Назначение:** карта **Symfony как приложения**: Kernel, bundles, DI-контейнер, конфигурация, HTTP, консоль, типичные компоненты. Отличается от `kb-laravel-symfony-underpinnings-v1.md` (там — роль Symfony **внутри** Laravel; читать его, если проект на Laravel). Мир `software.symfony`.
4
5**Порядок:** `playbook-php-v1.md` → этот файл. Общий PHP — `kb-php-*`.
6
7---
8
9### 1. Kernel и жизненный цикл запроса
10
11- **Fact:** `HttpKernel` обрабатывает Request → события ядра (request, controller, view, response, exception, terminate) → Response.
12- **Heuristic:** отладка middleware-подобного поведения — через **event subscribers** и порядок приоритетов.
13- **Confidence:** high
14
15---
16
17### 2. Bundles и структура проекта
18
19- **Fact:** функциональность упаковывается в **bundles**; приложение — набор bundles + конфиг `config/packages/*`.
20- **Heuristic:** Symfony **Flex** и рецепты настраивают пакеты при `composer require`; не коммитить секреты в yaml.
21
22---
23
24### 3. Dependency Injection
25
26- **Fact:** сервисы регистрируются в контейнере; автоконфигурация и autowiring (в современных версиях) снижают бойлерплейт; интерфейсы → реализации в `services.yaml`.
27- **Heuristic:** сервис `public: false` по умолчанию — инъекция через конструктор, не `$container->get()` в бизнес-коде.
28
29---
30
31### 4. Routing и контроллеры
32
33- **Fact:** маршруты — атрибуты / yaml / php config; контроллеры возвращают Response, JsonResponse или render (Twig).
34- **Heuristic:** единообразие с Laravel заканчивается на уровне «есть router»; синтаксис и conventions другие.
35
36---
37
38### 5. Doctrine ORM (типичный стек)
39
40- **Fact:** в экосистеме Symfony часто **Doctrine**; сущности, миграции, репозитории.
41- **Heuristic:** отличия от Eloquent — другой язык запросов (DQL, QueryBuilder); не переносить паттерны Laravel без проверки.
42
43---
44
45### 6. Messenger, Mailer, Scheduler
46
47- **Fact:** **Messenger** — очереди и message bus; **Mailer** — абстракция почты; интеграция с cron через scheduler-пакеты или системный cron + консольные команды.
48- **Heuristic:** как и в Laravel, идемпотентность обработчиков сообщений и retry policy — явно в коде/конфиге.
49
50---
51
52### 7. Тестирование
53
54- **Fact:** **PHPUnit**, **WebTestCase**, Kernel test; иногда Panther для браузера.
55- **Heuristic:** `kb-php-tooling-quality-v1.md` — общий слой; Symfony-специфика — документация testing ветки symfony.com/doc.
56
57---
58
59### 8. Версии и апгрейды
60
61- **Fact:** мажор Symfony (5 → 6 → 7 …) сопровождается **upgrade guides** и deprecations; LTS-ветки для долгой поддержки.
62- **Heuristic:** всегда сверять с **версией**, зафиксированной в `composer.lock`, не с «последней статьёй в блоге».
63
64---
65
66### 9. Граница с Laravel и Drupal
67
68- **Laravel** — другой full-stack; общие компоненты Symfony не делают приложения взаимозаменяемыми.
69- **Drupal** — CMS на Symfony; разработка модулей Drupal ≠ разработка чистого Symfony app, но HttpFoundation и т.д. родственны.
70
71---
72
73## Registry card (template-knowledge-card-v1)
74
75### Provenance
76- source_refs: `https://symfony.com/doc/current/index.html`; 2026-03-01
77- created_at: 2026-03-01
78- updated_at: 2026-03-01
79- author: agent-notes KB maintainer
80
81### Metadata
82- card_id: KC-2026-03-01-SYMFONY-FW
83- world: software.symfony
84- layer: world
85- tags: symfony; http-kernel; di; doctrine; messenger
86- status: active
87
88### Epistemic Linkage
89- epistemic_basis: fact + inference
90- evidence_type: official Symfony documentation
91- confidence: medium
92- uncertainty: минорные изменения между LTS и current
93- falsification_trigger: несовпадение с doc выбранной ветки
94- transfer_boundary: не заменяет чтение doc по конкретному компоненту
95
96### Core Unit
97- context: greenfield Symfony, миграция с другого фреймворка
98- signal: «bundle vs package», «где сервисы»
99- action: kernel events + services.yaml
100- outcome: идиоматичная структура проекта
101- lesson: Symfony явный и явно конфигурируемый
102
103### Operationalization
104- first_adoption_task: зафиксировать major symfony/* в README
105- validation_check: `bin/console lint:container` где доступно
106- success_criterion: деплой с `composer install --no-dev` и env
107- rollback_or_mitigation: откат lockfile
108
109### Lifecycle
110- supersedes: —
111- superseded_by: —
112- deprecation_reason: —
113
114
View only · write via MCP/CIDE