Download the PHP package falseclock/dbd-php-entity without Composer
On this page you can find all versions of the php package falseclock/dbd-php-entity. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download falseclock/dbd-php-entity
More information about falseclock/dbd-php-entity
Files in falseclock/dbd-php-entity
Package dbd-php-entity
Short Description DTO like library to fetch any data in an Object-Oriented manner (ORM)
License Apache-2.0
Informations about the package dbd-php-entity
DBD-PHP-Entity
NOTICE: readme находится в процессе написания.
Данная библиотека позволяет легко преобразовывать ассоциативные массивы в объекты по заранее предопределенным структурам (мапингу), иными словами реализует DTO. Изначально проект реализовывался как ORM библиотека, но не ограничивается этим. С помощью библиотеки можно описывать любые структурированные данные, а не только таблицы и их поля.
Принцип действия на пальцах
Представим, у вас есть таблица, с несколькими полями:
Данные из этой таблицы извлекаются через некий PDO и у вас есть именованный массив.
Чтобы обращаться к элементам, вам явно нужно оказывать наименование поля:
Если заранее создать маппинг, то мы можем получит объект вместо именованного массива:
Это дает нам возможность не привязываться к наименованиям полей. Только ли для табличных данных подходит данная библиотека? Нет. Можно описывать любые структуры, например YAML файла или просто какие-то JSON данные. Нужны вложенные структуры? Нужны геттеры и сэттеры? Нужна предварительная конвертация данных? Это все есть, и даже больше. Можно контролировать целостность данных, вложенность структур, скрывать поля, если вы хотите отдавать их во внешную среду и много много чего другого. Поможет в вашем проекте? Тогда вперед с установки.
Установка
Оглавление
Основные классы
- Mapper
- Entity
- View
Описание полей
- Column
- Complex
- Constraint
- Embedded
Вспомогательные классы
- Primitive
- Type
Вспомогательные классы
- FullEntity
- FullMapper
- OnlyDeclaredPropertiesEntity
- StrictlyFilledEntity
- SyntheticEntity
-
MapperVariables
-
- *
Mapper
Любое описание модели начинается с наследования этого абстрактного класса. Дочерний класс должен отвечать нескольким простым правилам:
- Все переменные с типом
Column
объявляются какpublic
. - Любые другие переменные кроме
Column
, объявляются какprotected
. - Класс не должен содержать
private
переменных. - Класс не должен иметь методы.
- Константа
ANNOTATION
должна быть переопределена. - Название класса должно иметь тоже самое название что и основной класс
Entity
с постфиксомMap
. - Оба класс
Entity
иMapper
должны быть в одномnamespace
.
Пример
Постфикс Map
, при желании, можно переопределить через константу Maper::POSTFIX
Все потомки Mapper
класса является синглтонами и вызываются через статичный метод me
.
Публичные методы
- __get
- findColumnByOriginName
- getAllVariables
- getAnnotation
- getColumns
- getComplex
- getConstraints
- getEmbedded
- getEntityClass
- getOriginFieldNames
- getPrimaryKey
- getTable
- getVarNameByColumn
- me
- meWithoutEnforcer
-
name
-
- *
__get
__get — магический метод для доступа к protected
переменным класса.
Описание
В некоторых случаях, при необходимости обращения к непубличным переменным в IDE, можно через phpdoc в заголовке класса
прописать переменную через @property
, которая доступна через магический метод. Если обратиться к несуществующей
переменной, будет выброшено исключение.
Пример
findColumnByOriginName
findColumnByOriginName — получение экземпляра класса Column через ключ ассоциативного массива.
Описание
Может быть использован, если необходимо получить информацию о том как описывается то или иное public
поле в Mapper
классе.
getAllVariables
getAllVariables — получение всех определенных переменных класса
Описание
Полезная функция, если имеется необходимость на основании описания полей сформировать скрипт создания таблицы в реляционной базе.
getAnnotation
getAnnotation — получение константы ANNOTATION
Описание
getColumns
getColumns — получение массива стандартных полей
Описание
Данная функция возвращает массив Columns
, которые определены в Mapper классе. Следует помнить, что комплексные поля
объявляются как public
.
getComplex
getComplex — получение массива комплексных полей
Описание
Данная функция возвращает массив Complex
, которые определены в Mapper классе. Следует помнить, что комплексные поля
объявляются как protected
.
getConstraints
getConstraints — получение массива ограничений
Описание
Данная функция возвращает массив Constraint
, которые определены в Mapper классе. Следует помнить, что ограничения
объявляются как protected
.
getEmbedded
getEmbedded — получение массива встроенных полей
Описание
Данная функция возвращает массив Embedded
, которые определены в Mapper классе. Следует помнить, что встроенные поля
объявляются как protected
.
getEntityClass
getEntityClass — получение класса, который использует данный маппинг
Описание
Следует осторожно использовать данную функцию, если вы не объявили Entity
и Mapper
в одном namespace
getOriginFieldNames
getOriginFieldNames — получение массива объявленных public
полей
Описание
Данная функция возвращает ассоциативный массив, где ключ — наименование переменной класса Mapper
, а значение —
наименование поля.