Download the PHP package seredoff/evolve-orm without Composer

On this page you can find all versions of the php package seredoff/evolve-orm. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package evolve-orm

EvolveORM

Адаптивное ORM для проектов с динамично развивающейся доменной моделью.

Содержание

  1. Введение
  2. Проблематика и обоснование
  3. Архитектура и принципы работы
  4. Установка и настройка
  5. Основные компоненты
  6. Примеры использования
  7. Продвинутые возможности
  8. Производительность и оптимизация
  9. Ограничения и совместимость

Введение

EvolveORM - PHP-библиотека, разработанная для эффективной работы с базами данных в проектах с быстро меняющимися и сложными доменными моделями. Она предлагает гибкий подход к объектно-реляционному отображению, преодолевая ограничения традиционных ORM-систем.

О паттерне гидрации

Процесс гидрации (насыщения) используется для наполнения данными уже доступной пользователю сущности. Когда был создан и зафиксирован ее инвариант в каком-либо перманентном хранилище данных. Поэтому следует учитывать, что гидрация производится полностью в обход интерфейса сущности (без вызова конструктора и сеттеров), предполагая изначальное соответствие неполной сущности инварианту своего типа.

Проблематика и обоснование

Эволюция проектов и проблемы с моделированием данных

Разработка программного обеспечения начинается с MVP (Minimum Viable Product), функциональные границы которого относительно определены. Это приводит к созданию простой и детерминированной структуры данных с прозрачными связями.

С преобразованием такой структуры данных в доменную модель большинство ORM-библиотек успешно справляются. Обеспечивая быстрое прототипирование и простоту поддержки начальной версии продукта.

Проблемы, возникающие при развитии проекта:

  1. Усложнение требований.
  2. Необходимость выполнения комплексных агрегирующих вычислений в БД.
  3. Трудности при проектировании и гидрации доменной модели из-за ограничений изначальной структуры данных.

Ограничения классических ORM

Традиционные ORM-библиотеки сталкиваются с рядом проблем при масштабировании проекта:

Архитектура и принципы работы

Ключевые особенности

EvolveORM предлагает альтернативный подход, основанный на следующих принципах:

  1. Самостоятельное составление запросов к БД: Отказ от конструкторов запросов ORM-библиотек в пользу прямого использования SQL. Позволит создавать сложные доменные модели независимо от структуры базы данных.
  2. Прозрачный маппинг: Прозрачный механизм маппинга свойств и связей объектов через алиасы на этапе составления SQL-запроса.
  3. Оптимизация производительности: Значительное ускорение работы за счет исключения промежуточных этапов конструирования запросов и маппинга, характерных для ORM-систем.
  4. Поддержка DDD: Облегчение реализации тактических паттернов предметно-ориентированного проектирования.

Схема работы EvolveORM

Установка и настройка

Для установки EvolveORM используйте Composer:

Основные компоненты

Hydrator

Отвечает за преобразование массивов данных в объекты. Он использует рефлексию для анализа свойств классов и их типов.

EvolveORM по-умолчанию включает следующие встроенные стратегии (в порядке применения):

  1. OrmMapperStrategy - позволяет применять пользовательские мапперы для гидрации свойств объекта, используя конфигурацию ORM или атрибуты.
  2. UnionStrategy - обрабатывает гидрацию свойств объекта, имеющих union тип, состоящий только из встроенных типов PHP ( int, float, string, bool, array). Ограничение обусловлено необходимостью присвоения данных как есть. Иначе возникает неопределенность при соотношении типов данных.
  3. BuiltInTypeStrategy - обрабатывает гидрацию свойств объекта, имеющих встроенные типы PHP (такие как int, string, bool и т.д.).
  4. EnumStrategy - обрабатывает гидрацию свойств объекта, имеющих тип Enum. Поддерживает как целочисленные, так и строковые значения для создания экземпляров Enum.
  5. InternalClassStrategy - обрабатывает гидрацию свойств объекта, имеющих тип внутреннего класса PHP, такие как DateTime, DateTimeImmutable и другие.
  6. CustomClassStrategy - обрабатывает гидрацию свойств объекта, имеющих тип пользовательского класса. Она использует рефлексию и гидратор для создания и заполнения объектов вложенных классов.

ORM Mappers

EvolveORM поддерживает возможность пользовательского объектно-реляционного отображения данных для обработки отдельных свойств объектов. Подробнее см. в конфигурации ORM мапперов.

Built-in мапперы:

Примеры использования

Базовое использование

Работа со сложными моделями

EvolveORM эффективно справляется с гидратацией сложных моделей, включающих множество вложенных объектов и коллекций. Рассмотрим пример модели, представляющей информацию о поездках автобусов.

Структура данных

Модель поездки включает следующие основные элементы:

Пример реализации модели

Конфигурация гидратора

Процесс гидратации

EvolveORM принимает на вход плоскую карту значений, где данные для гидратации объекта представлены в "расскатанном" виде.

Пример входных данных:

На выходе получаем объемную модель данных, где все вложенные объекты и коллекции правильно инициализированы и заполнены.

Подробную реализацию доменной модели и ее репозитория можно найти в директории tests.

Продвинутые возможности

Конфигурация ORM мапперов

Для обработки определенных свойств можно использовать пользовательские мапперы:

Добавьте маппер используя ORM конфигурацию или атрибуты:

Пользовательские стратегии гидрации

EvolveORM поддерживает использование пользовательских стратегий гидрации для адаптации под специфические требования проекта.

Для добавления пользовательских стратегий, создайте класс, реализующий интерфейс HydrationStrategy:

При создании экземпляра гидратора, передайте массив пользовательских стратегий:

Примечания

Производительность и оптимизация

EvolveORM реализует ряд оптимизаций для повышения производительности:

Кэширование рефлексии

По умолчанию используется механизм кэширования на основе слабых ссылок (WeakRef):

Перманентное кэширование

Для дополнительной оптимизации предусмотрен интерфейс ReflectionCache для реализации постоянного кэширования.

Пользователи могут реализовать этот интерфейс для создания собственных механизмов кэширования, например, с использованием Redis или файловой системы.

Инвалидация кэша

Для управления жизненным циклом кэша предусмотрен метод clear():

Рекомендуется вызывать этот метод при обновлении кода приложения или изменении структуры классов.

Сравнение производительности

Операция Традиционное ORM EvolveORM
Загрузка простого объекта 100% 95%
Загрузка сложного объекта с вложенными коллекциями 100% 70%
Загрузка коллекции объектов 100% 60%

Примечание: меньшие значения означают лучшую производительность

Ограничения и совместимость


All versions of evolve-orm with dependencies

PHP Build Version
Package Version
Requires php Version >=8.2.0
ext-json Version *
ext-mbstring Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package seredoff/evolve-orm contains the following files

Loading the files please wait ....