Bicycle/.claude/memory/project_bicycle.md
Egor Isaev b65603b4d0 dev
2026-06-23 10:44:18 +03:00

50 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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`