Это хорошая практика для извлечения строк из стандартного синтаксиса фреймворка?

Например: в sonata admin один класс администратора всегда имеет повторяющийся синтаксис, такой как

$formMapper->add('test', null, ['label' => 'testlabel']);

$formMapper->add('test1', null, ['label' => 'testlabel1']);

$formMapper->add('test2', null, ['label' => 'testlabel2']);

В этом случае, если я добавляю несколько полей с помощью метода add, наши врата качества говорят мне, что это запах кода, использующий строку «label» более 2 раз. Я должен добавить константу для этой строки …

Хорошо ли сейчас или плохо иметь много классов, полных таких констант, как

const KEY_LABEL = 'label'

$formMapper->add('test2', null, [self::KEY_LABEL => 'testlabel2']);

???

Я не могу понять, в чем же большая польза … если когда-нибудь ключ метки изменится, что дается фреймворком, я должен внести изменения в этот материал в любом случае …

0

Решение

Краткий ответ: Нет. Symfony не переименовывает ключи.

Длинный ответ: у Symfony довольно строгий Обещание обратной совместимости. Это не очень вероятно, label ключ будет переименован. Но это не значит, что это не изменится.

Если вам нужно «переименовать» ключ, очень вероятно, что вам также придется изменить значение. Это означает, что вы не переименовываете, а заменяете его. Использование константы поможет вам переименовать ключи, но не поможет рефакторинг значения.

Я начал работать с Symfony много лет назад (начал с 2.1 и сейчас тестировал бета-версию 3.4), и в прошлом мне приходилось выполнять некоторые «переименования». Почти во всех случаях ключ не был переименован, но он устарел и впоследствии был заменен другим ключом. Один из примеров, которые я могу вспомнить, это Выбор формы рефакторизации, но я уверен, что есть еще и еще лучшие примеры.

0

Другие решения

Других решений пока нет …