5.9 KiB
Класс DBItemProperty
Класс DBItemProperty
предназначен для описания отдельного свойства объекта, реализующего интерфейс IDBItem
. Он
предоставляет полную информацию о свойствах объекта, предназначенных для хранения в базе данных, включая имя, значение,
тип данных, правила преобразования и сравнение.
Пространство имён
namespace goodboyalex\php_db_components_pack\models;
Автор и версия
- Автор: Александр Бабаев
- Версия: 1.0
- Дата начала поддержки: с версии 1.0
Назначение
Класс DBItemProperty
описывает отдельную сущность — объект и его свойства, предназначенного для хранения в базе
данных. Помимо основного значения, он также хранит информацию о том, как это свойство будет отражаться в базе данных
(например, имя колонки, тип данных, преобразователи и правила игнорирования).
Основные элементы класса
Поля
Поля класса DBItemProperty
Имя поля | Тип поля | Описание |
---|---|---|
Name | string | Имя свойства в объекте. |
Value | mixed | Текущее значение свойства (до преобразования). |
Column | DataBaseColumn | Объект, описывающий характеристики колонки в базе данных (тип данных, ограничения и т.д.). |
IsIgnored | bool | Признак, указывающий, что данное свойство игнорируется при сохранении в базу данных или загрузке из неё. |
ConvertToDB | Closure | Замыкание, осуществляющее преобразование значения свойства в формат, подходящий для записи в базу данных. |
ConvertFromDB | Closure | Замыкание, осуществляющее обратное преобразование из формата базы данных в формат внутреннего представления. |
Compare | Closure | Замыкание, позволяющее сравнивать значения свойства. |
Конструктор
Позволяет сконструировать объект с полной информацией о свойстве, включая имя, значение, связь с колонкой базы данных и средства преобразования и сравнения.
Пример использования
Допустим, у вас есть объект пользователя, и вы хотите описать свойство username
следующим образом:
use goodboyalex\php_db_components_pack\models\DBItemProperty;
use goodboyalex\php_db_components_pack\models\DataBaseColumn;
use goodboyalex\php_db_components_pack\enums\DBType;
// Создаём объект свойства username
$property = new DBItemProperty(
// Имя свойства
'username',
// Текущее значение
'john_doe',
// Характеристики колонки
new DataBaseColumn(
// - имя колонки в базе данных
'user_name',
// - тип данных (строка, макс. 255 символов)
new Tuple(DBType::STRING, 255),
// - NOT NULL
true,
// - UNIQUE
true,
// - не первичный ключ
false,
// - без внешнего ключа
new Tuple(null, null),
// - без проверок
new ConditionBuilder(),
// - значение по умолчанию
''
),
// Не игнорируется
false,
// Преобразование в нижний регистр перед сохранением
function ($value) { return strtolower($value); },
// Преобразование в Title Case при получении
function ($value) { return ucfirst($value); },
// Функция сравнения
function ($left, $right) { return strcmp($left, $right); }
);
Дополнительная информация
Класс DBItemProperty
является важной составляющей инфраструктуры для работы с объектами, предназначенными для хранения
в базе данных. Он позволяет детально описывать свойства объектов, включая преобразования и правила загрузки/записи, что
существенно упрощает интеграцию с базой данных и повышает гибкость работы с данными.