50 lines
2.9 KiB
Markdown
50 lines
2.9 KiB
Markdown
---
|
||
name: project-bicycle-overview
|
||
description: "Текущее состояние проекта Bicycle — PHP MVC micro-framework, реализованные классы и планы"
|
||
metadata:
|
||
type: project
|
||
---
|
||
|
||
Проект Bicycle — самописный PHP MVC micro-framework (PHP >= 8.2), автор Egor Isaev.
|
||
|
||
**Why:** Учебный/экспериментальный проект ("изобрести велосипед"). Не предлагать заменить на Laravel/Symfony.
|
||
|
||
**How to apply:** При добавлении фич ориентироваться на стиль существующих классов. Всегда обновлять CLAUDE.md после изменений без напоминаний ([[feedback-update-claude-md]]).
|
||
|
||
### Уже реализовано (по состоянию на 2026-06-23)
|
||
|
||
**Ядро MVC:**
|
||
- `Core`, `Route`, `Request`, `Response`, `Controller`, `View`, `MyException`
|
||
|
||
**HTTP-инфраструктура:**
|
||
- `HTTP` (redirect, request_headers)
|
||
- `HTTP\Header` (ArrayObject, send)
|
||
- `HTTP\Message` (интерфейс)
|
||
- `HTTP\Request` (интерфейс, константы методов)
|
||
- `HTTP\HTTPException` (factory, get_response)
|
||
- `HTTP\Exception\HTTPException_302/403/404`
|
||
- `HTTP\Client\{Request, Curl, Response}` (исходящие запросы)
|
||
|
||
**Состояние и конфиг:**
|
||
- `Session` (синглтон, именованные сессии)
|
||
- `Cookie` (статический хелпер)
|
||
- `Config` (lazy-load + merge config.local.php)
|
||
|
||
**Приложение:** `IndexController` (`indexAction` GET + `postAction` POST — демо HTTP-клиента к jsonplaceholder), шаблон `App/view/Index/index.html`.
|
||
|
||
**Тесты:** 111 тестов, все проходят (`docker exec bicycle vendor/bin/phpunit`).
|
||
|
||
### Не реализовано / заготовки
|
||
|
||
- `Services/DataBase`, `Services/Mail`, `Services/PDF` — пустые каталоги, кода нет (зависимости PDO/PHPMailer/dompdf в composer.json есть).
|
||
- `App/Classes/` — отсутствует.
|
||
- Запланировано: `Model`, `BaseController` (before/after), `Database`+`PdoDriver` (PDO singleton с failover), `Statement` (showQuery/sq), `Repository` (CRUD + транзакции/SAVEPOINT), `Profiler`/`ProfilerPDO`.
|
||
|
||
### Важные ограничения
|
||
|
||
- Переменная окружения среды — `APP_ENV` (раньше была `MMH_ENV`), задаётся в `.htaccess` через `SetEnv`.
|
||
- **Никогда не трогать** `/home/isaevea/http/docker-dev/docker/php-apache/8.2.8/Dockerfile`
|
||
- Apache config: `/home/isaevea/http/docker-dev/conf/Bicycle/apache2/apache2.conf`
|
||
- `Core::init()` не вызывается в тестовом bootstrap (конфликт с PHPUnit handlers)
|
||
- PHPStorm: volume `/home/isaevea/http/Bicycle` → `/opt/project`, autoload `/opt/project/vendor/autoload.php`
|