2017-05-21 4 views
0

せずに動作するようにコードを単純化することができますが必要になることはありません、あなたは私が私に言ってPHPMDのメッセージを持って、他の

が必要になることはありませんし、この部分に他の せずに動作するようにコードを簡素化することができますコードの:

if ($settings == null) { 
     $settings = new self($arrSettings); 
} else { 
     $settings->fill($arrSettings); 
} 
$settings->save(); 

return $settings; 

私の質問は:どのように私は)(それ以外は避けるべきです。私が見る唯一の方法は、$setting->save()を複製して戻すことです。

答えて

3

おそらくそれは

if ($settings === null) { 
    $settings = new self; // or new self([]); 
} 
$settings->fill($arrSettings); 
$settings->save(); 

return $settings; 

ように書き換えることができるので、しかし、クラスのインスタンスは、自身のクレート新しいインスタンスにできないようにする必要がありので、TBH、全体の事は、SRPの一つの大きな違反のように見えます。それだけで意味がありません..しかし、再び、私は "職人"ではありません。

+0

私はできる限り最高のPHPをコーディングしようとしています。あなたのコメントは私にとって素晴らしいものです。これはPHPMDのもう一つの警告である、私がこのメソッドを静的と呼ぶために起こります。だから、関数の外部にインスタンスを作成するとこの問題が解決されるはずです –

+0

その場合、新しい 'Settings'インスタンスの作成を担当する別のファクトリクラスを作成するべきでしょう。 –

+0

はい、それは私が '$ settings = new self($ arrSettings);を変更する方法がわからないからです。$ –

関連する問題