Представляем вам Imhotep - PHP-фреймворк с открытым исходным кодом.
Его архитектура и инструментарий напоминают популярные фреймворки, но есть и существенные отличия, которые, по нашему мнению, являются ключевыми в разработке и поддержке Imhotep. Давайте ознакомимся с ними.
Минимальная зависимость
Мы стремимся к минимальной зависимости от сторонних PHP-пакетов, что дает ряд преимуществ:
Значительно уменьшает размер приложения, исключая загрузку ненужных данных;
Снижает вероятность возникновения уязвимостей, связанных с внешними зависимостями.
После установки размер Imhotep составляет всего ~5 мегабайт.
Легкая установка
Для работы приложения Imhotep необходим PHP версии не ниже 8.2. На ваш выбор предлагается два варианта установки Imhotep:
Первый способ: через Composer
composer create-project imhotep/imhotep example-app
cd example-app
cp .env.example .env && ./imhotep key:gen
php server
Второй способ: с помощью Docker на основе Alpine образов
curl -s "https://install.imhotep.dev/example-app" | bash
cd example-app
./vendor/bin/docker up
Более подробную информация о установке и конфигурировании приложения можно прочитать в документации на официальном сайте.
Быстродействие и оптимизация
Благодаря тщательной оптимизации внутреннего кода и снижению оверхеда, мы добились следующих результатов в ходе тестирования с использованием Apache Benchmark (10 concurrency, 1000 requests, Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.8 GHZ, 1 GB ОЗУ, SSD) c пустым контроллером:
Количество ядер | 1 ядро | 4 ядра | 8 ядер |
---|---|---|---|
Общее время теста | 3.603 s. | 1.226 s. | 0.931 s. |
Запросов в секунду | 277 | 815 | 1074 |
Время одного запроса | 0.0036 s. | 0.0012 s. | 0.0009 s. |
Как видно из представленной выше таблицы, даже на самом слабом сервере, базовые функции Imhotep не окажет существенного влияния на скорость загрузки приложения.
Возможности
На сегодняшний момент Imhotep поддерживает:
Кеширование: array, file, redis (скоро memcached, database)
Базы данных: sqlite, mysql, postgres
Файловую систему: local, S3
Локализацию приложения
Уведомления: SMTP, Telegram, SMS
Сессии: array, file (скоро redis, memcached, database)
Валидацию входных данных
Шаблонизатор
И много других возможностей, которые можно изучить в документации.
Документация
Мы уделяем особое внимание созданию подробной и структурированной документации, которая позволяет быстро перейти от ознакомления к использованию фреймворка.
Импортозамещение
В условиях современных мировых реалий Imhotep может стать хорошим решением для импортозамещения. Мы стараемся создать инструмент, который будет полезен для всех желающих использовать качественные и надежные решения в своих проектах.
Переход на Imhotep
Imhotep сочетает в себе все ключевые достоинства современных фреймворков, при этом сохраняет привычный стиль разработки. Это позволяет легко и быстро приступить к созданию приложений или перенести свой код с других фреймворков на Imhotep с минимальными изменениями.
Пример приложения
Чтобы продемонстрировать возможности фреймворка, был создан простой блог. В нём пользователи могут добавлять, редактировать и удалять статьи, а также автоматически регистрироваться, не требуя подтверждения при входе.
Приложение доступно по адресу example-blog.imhotep.dev. Исходный код можно изучить на Github.
Заключение
Мы проделали большую работу по созданию Imhotep и оптимизации внутреннего кода, но чтобы достичь идеала, нам нужна ваша помощь и поддержка. Если у вас есть идеи по улучшению функционала, вы готовы потратить время на разработку новых функций или устранение недостатков, мы будем рады видеть вас в нашем сообществе на GitHub.