2025-08-10 18:28:01 +03:00

4.1 KiB
Raw Permalink Blame History

Атрибут ConvertToDB

Атрибут ConvertToDB предназначен для настройки процесса преобразования значений при взаимодействии с базой данных. Он позволяет задать специальные методы для преобразования данных между внутренним представлением и формой, подходящей для сохранения в базе данных.

Основное назначение

Атрибут позволяет настроить индивидуальные процедуры для преобразования данных, поступающих из базы данных и обратно. Часто бывает необходимо изменять формат данных при передаче их между слоями приложения и хранилищем, например, преобразовать JSON в объект или нормализовать строку для хранения в определенном формате.

Синтаксис использования

Атрибут принимает два параметра:

  • fromType - определение конвертации из БД (может быть строкой, массивом или null). По умолчанию, null.
  • toType - определение конвертации в БД (может быть строкой, массивом или null). По умолчанию, null.

Примеры использования

Пример 1: Использование строковых вызовов

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(
        'App\Converters\JsonConverter::decode',
        'App\Converters\JsonConverter::encode'
    )]
    public array $MetaData;
}

Пример 2: Использование массивов для вызова методов

final class Product
{
    #[ConvertToDB(
        ['App\Converters\DateConverter', 'convertToInternal'],
        ['App\Converters\DateConverter', 'convertToDB']
    )]
    public string $created_at;
}

Параметры атрибута

  • fromType (string|array|null) - определение конвертации из БД
    • Строка: имя статического метода
    • Массив: [класс, метод]
  • toType (string|array|null) - определение конвертации в БД
    • Строка: имя статического метода
    • Массив: [класс, метод]

Пространство имён

Атрибут объявлен в пространстве имён:

namespace goodboyalex\php_db_components_pack\attributes;

Версии и автор

  • Автор: Александр Бабаев
  • Версия: 1.0
  • Дата выпуска: с версии 1.0

Особенности

  • Атрибут применяется только к свойствам класса
  • Поддерживает два формата определения конвертаций
  • Автоматически создаёт замыкания на основе переданных данных
  • Позволяет использовать любые статические методы для конвертации

Когда использовать атрибут?

Атрибут ConvertToDB пригодится, когда возникает необходимость нестандартного преобразования данных. Например, если вы работаете с JSON-данными, XML-документами или бинарными изображениями, и нужно аккуратно сохранять и извлекать эти данные из базы данных.

На главную