Forge
markdowne8ad0934
1# PHP Playbook v1
2
3## Purpose
4
5Операционный контракт для **мира `software.php`** (8.x, ориентир **8.4+**): среда, Composer, SAPI, диагностика, безопасность, полный фундаментальный проход. Детали релиза и рантайма — `kb-php-fundamentals-v1.md`; **карта всех слоёв PHP** — `index-knowledge-php-cluster-v1.md`. **WordPress / Drupal / Symfony full stack / зоопарк Packagist** — `index-knowledge-php-adjacent-ecosystem-v1.md` → целевой kb.
6
7## Scope
8
9- Версия PHP и согласованность сред (local/CI/prod)
10- Composer: lock, platform, audit, scripts
11- CLI vs php-fpm: разная диагностика
12- Миграция минорных/патчей PHP
13- Когда грузить какой kb из PHP-кластера
14- Смежные платформы на PHP (не Laravel): см. § Adjacent ecosystem
15
16## Adjacent ecosystem (WordPress, Drupal, Symfony, Packagist)
17
18- **Карта:** `index-knowledge-php-adjacent-ecosystem-v1.md` — один целевой kb за запрос.
19- **Composer audit, SemVer, Spatie и сторонние пакеты:** `kb-composer-packagist-thirdparty-v1.md` (дополняет контракты этого playbook про lockfile).
20
21## Full fundamental pass (миру php)
22
23Выполнять **последовательно** только при явном запросе «полный проход» / онбординг по PHP (не в каждом чате):
24
250. **Опционально:** `kb-php-versions-and-evolution-v1.md` — если есть легаси 5.x/7.x или нужна хронология фич по мажорам.
261. `kb-php-fundamentals-v1.md` — платформа, OPcache, 8.4, FPM, JIT/preload outline.
272. `kb-php-language-semantics-v1.md` — язык, типы, ошибки, ООП.
283. `kb-php-web-sessions-io-v1.md` — HTTP, сессии, cookies, upload, потоки.
294. `kb-php-data-persistence-v1.md` — PDO, SQL-дисциплина, транзакции.
305. `kb-php-tooling-quality-v1.md` — тесты, статанализ, Rector, CI.
31
32**Миграция между мажорами (5→7→8):** помимо шага 0 — официальные страницы `migration70` … `migration84` на php.net и `UPGRADING` между минорами; KB не заменяет их построчно.
33
34**Остановка:** после шага, отвечающего на вопрос; не читать следующий kb без нужды.
35
36## Evidence-Based Working Format
37
38- **Fact:** `php -v`, `php -i` (релевантные директивы), SAPI из `php_sapi_name()`.
39- **Hypothesis:** ожидаемый эффект изменения.
40- **Check:** минимальный reproduce (скрипт, тест, curl).
41- **Decision criterion:** тесты + отсутствие новых deprecations в CI при `E_ALL`.
42- **Confidence mark:** явно.
43
44## Core Contracts
45
46- Одна **источник правды** по версии PHP: `composer.json` + образ CI + прод-образ.
47- `composer.lock` под версионированием для **приложений**.
48- Не полагаться на глобально установленный PHP без проверки в проекте.
49
50## Runtime Contracts
51
52- Разделять **веб** (OPcache, fpm workers, timeouts, preload) и **CLI** (`memory_limit`, batch).
53- После деплоя: политика сброса OPcache / перезапуск fpm при смене кода.
54
55## Dependency Contracts
56
57- Регулярно `composer audit` в CI.
58- Явные `ext-*` в `require`, если без них приложение не поднимается.
59
60## Security Contracts
61
62- Прод: `display_errors=Off`, логирование отдельно от ответа пользователю.
63- Секреты через env/secret store; сессии — `session_regenerate_id` при смене уровня доверия (см. `kb-php-web-sessions-io-v1.md`).
64
65## Metrics
66
67- Время CI на целевой версии PHP.
68- Deprecations count в логах.
69- Инциденты рассинхрона версий / расширений.
70
71## Revisit Triggers
72
73- Обновление PHP в проде; массовые deprecations после `composer update`.
74- Смена SAPI (FrankenPHP, Octane, RoadRunner) — пересмотреть таймауты, долгоживущие процессы, OPcache.
75
76## Layer (memory-architecture)
77
78- **L1:** `status-php-laravel-v1.md` → этот playbook.
79- **L1 deep:** один или цепочка kb по `index-knowledge-php-cluster-v1.md`.
80- **Laravel поверх PHP:** `playbook-laravel-v1.md` (не подменять фреймворком знание рантайма).
81
View only · write via MCP/CIDE