例如:在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 :(得分:0)
简短回答:不会.Symfony不会重命名密钥。
答案很长:Symfony有一个非常严格的Backwards Compatibility Promise。 {/ 1}}密钥不太可能被重命名。但这并不意味着它不会改变。
如果您必须'重命名'某个键,则很可能您也必须更改该值。这意味着你不是要重命名,而是替换它。使用常量将帮助您重命名键,但它不会帮助您重构值。
多年前我开始与Symfony合作(从2.1开始并立即测试3.4-beta)我过去不得不进行一些'重命名'。在几乎所有情况下,密钥都没有重命名,但它已被弃用,后来被另一个密钥替换。我记得的一个例子是Choice form type refactorization,但我确信还有更多甚至更好的例子。