2017-05-21 53 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);'用$ this –