在重构之后,我们的一个类中有这样的东西:
class FooBar
{
// $foo was $bla before
private $foo;
public function setBlubbOnArrayOnlyOnce($value)
{
// $this->bla was forgotten during refactoring. Must be $this->foo
if(!isset($this->bla['blubb'])) {
$this->foo['blubb'] = $value;
}
}
}
所以最后 $this->foo['blubb'] 总是被设置,而不仅仅是一次。发生这种情况是因为 PHP 的神奇方法。我们不希望动态访问字段,所以我想我只是添加一个代码嗅探器规则。但是我没有找到,问我为什么。
PHPStorm 在那里显示了一个动态声明的字段,但我希望它在我们的部署周期中自动失败并使用代码嗅探器(或类似的东西)。
有人对此有想法吗?有什么好的规定吗?我应该自己写吗?怎么写?还是禁用它是不好的做法?
免责声明:我们使用测试,但有时你会遗漏一些东西......首先防止这种情况会很好。另外,请不要想出覆盖魔术方法。我不想在每个班级都有一个特质/抽象。