# Класс `DBItemProperty` Класс `DBItemProperty` предназначен для описания отдельного свойства объекта, реализующего интерфейс `IDBItem`. Он предоставляет полную информацию о свойствах объекта, предназначенных для хранения в базе данных, включая имя, значение, тип данных, правила преобразования и сравнение. ## Пространство имён ```php 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` следующим образом: ```php 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` является важной составляющей инфраструктуры для работы с объектами, предназначенными для хранения в базе данных. Он позволяет детально описывать свойства объектов, включая преобразования и правила загрузки/записи, что существенно упрощает интеграцию с базой данных и повышает гибкость работы с данными. [На главную](../../index.md)