Работаю над Symfony проектом, там есть сущности:
- Проекты
- Настройки проектов
Настройки бывают разные, иногда это число, чаще это какой-то php-шный enum и их нужно сохранять и доставать из таблички.
Сейчас пришел к тому, что можно сделать свой сериализатор к строчному типу и явно описать каждую существующую настройку в системе. В Symfony, как я понял из коробки нет чего-то подобного. Выглядит это как-то так:
enum AuthTypesEnum: string
{
use Arrayable;
case SESSION = 'session';
case JWT = 'jwt';
}
final class ProjectSettingsMapper extends BaseMapper implements Typable
{
/**
* @inheritDoc
*/
public static function types(): array
{
return [
'AUTH_TYPE' => new AsEnum(AuthTypesEnum::class),
'AUTH_MAX_ATTEMPT' => new AsInt(),
];
}
}
В идеале хотелось бы иметь подсказки в phpstorm, в текущей реализации этого нет (хотя phpdoc описан), да и выглядит как большой костыль.
Собственно, вопрос: как лучше и правильнее такое сделать?