2015-09-16 61 views
0

這兩個PHP類方法根據phpmd rule booleanargumentflag違反Single Responsibility Principle (SRP)PHPMD說違反單一職責原則具有布爾默認值參數

它們應該如何書寫以避免這種情況?

如果解決方法是刪除默認值「= true」,那麼這是怎麼提高的代碼?

/** 
* Set verbose mode. 
* 
* @param boolean $mode true or false to enable and disable verbose mode, 
*      default is true. 
* 
* @return $this 
*/ 
public function setVerbose($mode = true) 
{ 
    $this->verbose = $mode; 
    return $this; 
} 


/** 
* Use cache or not. 
* 
* @param string $use true or false to use cache. 
* 
* @return $this 
*/ 
public function useCache($use = true) 
{ 
    $this->useCache = $use; 
    return $this; 
} 
+1

我假設這是你使用$ this-> verbose和$ this-> useCache在非布爾上下文中的其他地方,但我沒有看到自己之前的錯誤。也是不相關的,$ use有一個@參數字符串PHPDoc。 – markdwhite

回答

1

這個提示的意圖是減少方法的責任。 在這種特殊情況下,如果方法的功能是設置某種行爲,它不應該有任何默認值。默認值屬於類定義或其構造函數。

你可以僅僅刪除參數的默認值,並設定他們當你定義類的屬性。我:

public $useCache = true; 
相關問題