2025-08-06 18:10:04 +03:00

3.4 KiB
Raw Blame History

Атрибут 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-документами или бинарными изображениями, и нужно аккуратно сохранять и извлекать эти данные из базы данных.

На главную