在 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
, (尽管可能有其他重复很多的字符串),想象一个有很多必填字段的大表单,你基本上必须每次都复制粘贴你的字符串。
直接方法
类常量:因此,在创建新的必填字段时,避免这种重复以及可能的复制粘贴/语法错误的第一件事就是创建一个类常量。
const REQUIRED = 'required';
然而,这种方法的缺点是您仍然需要跨文件复制一些类常量。(任务表单、用户表单、随心所欲的表单)。而这似乎并不理想。一个大的类常量文件:创建一些唯一内容是常量的类怎么样?例如:
<?php
class FormConstants {
const REQUIRED = 'required';
const LABEL = 'label';
...
}
属性文件:简单,直截了当,但有点老派,在某种意义上我不知道这种方法是否还会被使用,也有点进入翻译领域,对吧?
其他:
你会采取什么方法/其他方法来解决这个问题?
注意:为了简单起见,我在这里使用表单和验证作为示例,但是可能还有其他情况会发生这种情况。