Представляем вам 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.