2.9 KiB
2.9 KiB
| name | description | metadata | ||
|---|---|---|---|---|
| project-bicycle-overview | Текущее состояние проекта Bicycle — PHP MVC micro-framework, реализованные классы и планы |
|
Проект 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/404HTTP\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