0

在 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, (尽管可能有其他重复很多的字符串),想象一个有很多必填字段的大表单,你基本上必须每次都复制粘贴你的字符串。

直接方法

  1. 类常量:因此,在创建新的必填字段时,避免这种重复以及可能的复制粘贴/语法错误的第一件事就是创建一个类常量。const REQUIRED = 'required';然而,这种方法的缺点是您仍然需要跨文件复制一些类常量。(任务表单、用户表单、随心所欲的表单)。而这似乎并不理想。

  2. 一个大的类常量文件:创建一些唯一内容是常量的类怎么样?例如:

<?php
class FormConstants {
    const REQUIRED = 'required';
    const LABEL = 'label';
    ...
}
  1. 属性文件:简单,直截了当,但有点老派,在某种意义上我不知道这种方法是否还会被使用,也有点进入翻译领域,对吧?

  2. 其他

你会采取什么方法/其他方法来解决这个问题?

注意:为了简单起见,我在这里使用表单和验证作为示例,但是可能还有其他情况会发生这种情况。

4

0 回答 0