リファクタリングの後、クラスの 1 つに次のようなものがありました。
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 のマジック メソッドが原因で発生します。フィールドに動的にアクセスできるようにしたくないので、codesniffer ルールを追加するだけでよいと考えました。しかし、何も見つからず、理由を尋ねました。
PHPStorm は動的に宣言されたフィールドを示していますが、デプロイ サイクル中にコードスニッファー (または同様のもの) で自動的に失敗するようにしたいと考えています。
誰かこれについて考えがありますか?良いルールはありますか?自分で書くべきですか?または、それを無効にするのは悪い習慣でしょうか?
免責事項: テストを使用していますが、見逃すこともあります...まずこれを防止することをお勧めします。また、魔法のメソッドを上書きしないでください。すべてのクラスに特性/抽象を持ちたくありません。