3.4 KiB
Атрибут ConvertToDB
Атрибут ConvertToDB
предназначен для настройки процесса преобразования значений при взаимодействии с базой данных. Он
позволяет задать специальные методы для преобразования данных между внутренним представлением и формой, подходящей для
сохранения в базе данных.
Основное назначение
Атрибут позволяет настроить индивидуальные процедуры для преобразования данных, поступающих из базы данных и обратно. Часто бывает необходимо изменять формат данных при передаче их между слоями приложения и хранилищем, например, преобразовать JSON в объект или нормализовать строку для хранения в определенном формате.
Пример использования атрибута
Допустим, у вас есть модель данных, содержащая поле, которое хранит метаданные в формате JSON, и вы хотите, чтобы это поле было сериализовано в JSON при сохранении в базу данных и десериализовано обратно при извлечении:
use goodboyalex\php_db_components_pack\attributes\ConvertToDB;
use goodboyalex\php_db_components_pack\attributes\DataType;
use goodboyalex\php_db_components_pack\enums\DBType;
final class Product
{
#[ConvertToDB(
fromType: fn($val) => json_decode($val, true),
toType: fn($val) => json_encode($val)
), DataType(DBType::STRING)]
public array $MetaData;
// Другие поля и геттеры/сеттеры...
}
В данном примере атрибут #[ConvertToDB]
применяется к полю $MetaData
, и два заданных замыкания определяют порядок
преобразования данных при чтении и записи.
Пространство имён
Атрибут объявлен в пространстве имён:
namespace goodboyalex\php_db_components_pack\attributes;
Версии и автор
- Автор: Александр Бабаев
- Версия: 1.0
- Дата выпуска: с версии 1.0
Особенности
- Применяется только к полям (properties)
Атрибут используется исключительно для аннотирования полей классов, которые соответствуют столбцам базы данных.
Когда использовать атрибут?
Атрибут ConvertToDB
пригодится, когда возникает необходимость нестандартного преобразования данных. Например, если вы
работаете с JSON-данными, XML-документами или бинарными изображениями, и нужно аккуратно сохранять и извлекать эти
данные из базы данных.