# Атрибут `ConvertToDB` Атрибут `ConvertToDB` предназначен для настройки процесса преобразования значений при взаимодействии с базой данных. Он позволяет задать специальные методы для преобразования данных между внутренним представлением и формой, подходящей для сохранения в базе данных. ## Основное назначение Атрибут позволяет настроить индивидуальные процедуры для преобразования данных, поступающих из базы данных и обратно. Часто бывает необходимо изменять формат данных при передаче их между слоями приложения и хранилищем, например, преобразовать JSON в объект или нормализовать строку для хранения в определенном формате. ## Синтаксис использования Атрибут принимает два параметра: * **fromType** - определение конвертации из БД (может быть строкой, массивом или `null`). По умолчанию, `null`. * **toType** - определение конвертации в БД (может быть строкой, массивом или `null`). По умолчанию, `null`. ### Примеры использования #### Пример 1: Использование строковых вызовов ```php 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: Использование массивов для вызова методов ```php final class Product { #[ConvertToDB( ['App\Converters\DateConverter', 'convertToInternal'], ['App\Converters\DateConverter', 'convertToDB'] )] public string $created_at; } ``` ## Параметры атрибута * **fromType** (string|array|null) - определение конвертации из БД * Строка: имя статического метода * Массив: [класс, метод] * **toType** (string|array|null) - определение конвертации в БД * Строка: имя статического метода * Массив: [класс, метод] ## Пространство имён Атрибут объявлен в пространстве имён: ```php namespace goodboyalex\php_db_components_pack\attributes; ``` ## Версии и автор - **Автор**: Александр Бабаев - **Версия**: 1.0 - **Дата выпуска**: с версии 1.0 ## Особенности * Атрибут применяется только к свойствам класса * Поддерживает два формата определения конвертаций * Автоматически создаёт замыкания на основе переданных данных * Позволяет использовать любые статические методы для конвертации ## Когда использовать атрибут? Атрибут `ConvertToDB` пригодится, когда возникает необходимость нестандартного преобразования данных. Например, если вы работаете с JSON-данными, XML-документами или бинарными изображениями, и нужно аккуратно сохранять и извлекать эти данные из базы данных. [На главную](../../index.md)