Как работать с часто используемыми строками в проекте? - PullRequest
0 голосов
/ 03 февраля 2020

Работа над 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 приближается

  1. Константы класса : поэтому первое, что пришло мне в голову, чтобы избежать этого повторения, и возможные ошибки копирования-вставки / грамматики при создании нового обязательного поля, должен был создать константу класса. const REQUIRED = 'required'; Однако недостатком этого подхода является то, что вам все равно придется дублировать некоторые константы классов в разных файлах. (Форма задачи, форма пользователя, форма, которая вам нравится). И это не кажется идеальным.

  2. Один большой файл констант классов : Как насчет создания некоторых классов, в которых единственным содержимым будут константы? Например:

<?php
class FormConstants {
    const REQUIRED = 'required';
    const LABEL = 'label';
    ...
}

Файл свойств : Простой, но не совсем старый, в том смысле, что я не знаю, будет ли по-прежнему использоваться такой подход, также в переводе, да?

Другое :

Какой подход / другой подход вы бы выбрали для этого? проблема?

Примечание: здесь я использую формы и валидацию в качестве примеров для простоты, однако может быть другой сценарий ios, где это происходит.

...