Работа над MVC приложениями позволила мне понять, что МНОЖЕСТВО некоторых строк повторяется в каждом отдельном классе формы. Например, возьмите Symfony Forms, обычно можно увидеть такие вещи:
<?php
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('task')
->add('dueDate', null, ['required' => false]) // repeat for n fields
->add('save', SubmitType::class)
;
}
}
или laravel валидаторы:
<?php
public function myMethod() {
$request->validate([
'title' => 'bail|required|unique:posts|max:255',
'body' => 'required', // repeat for n fields
]);
}
Теперь ключевое слово здесь required
, (хотя могут быть и другие строки, которые многократно повторяются), представьте себе большую форму с большим количеством обязательных полей, вам нужно просто скопировать и вставить строку каждый раз .
Direct приближается
Константы класса : поэтому первое, что пришло мне в голову, чтобы избежать этого повторения, и возможные ошибки копирования-вставки / грамматики при создании нового обязательного поля, должен был создать константу класса. const REQUIRED = 'required';
Однако недостатком этого подхода является то, что вам все равно придется дублировать некоторые константы классов в разных файлах. (Форма задачи, форма пользователя, форма, которая вам нравится). И это не кажется идеальным.
Один большой файл констант классов : Как насчет создания некоторых классов, в которых единственным содержимым будут константы? Например:
<?php
class FormConstants {
const REQUIRED = 'required';
const LABEL = 'label';
...
}
Файл свойств : Простой, но не совсем старый, в том смысле, что я не знаю, будет ли по-прежнему использоваться такой подход, также в переводе, да?
Другое :
Какой подход / другой подход вы бы выбрали для этого? проблема?
Примечание: здесь я использую формы и валидацию в качестве примеров для простоты, однако может быть другой сценарий ios, где это происходит.