Php 避免$onlyActive布尔参数
我最近开始使用phpmd来检测错误的编码实践并修复它们。我的项目使用Laravel4PHP框架,我实现了一个存储库模式 因此,我有一个名为Php 避免$onlyActive布尔参数,php,methods,laravel-4,boolean,Php,Methods,Laravel 4,Boolean,我最近开始使用phpmd来检测错误的编码实践并修复它们。我的项目使用Laravel4PHP框架,我实现了一个存储库模式 因此,我有一个名为EloquentProductRepository的类,它与数据库中的产品表交互。有些方法,如all()方法,有一个名为$onlyActive的布尔参数。如果为true,则仅获取活动产品,否则返回所有产品 Phpmd告诉我,布尔参数是违反单一责任模式的特定标志。所以我读了一些书,同意应该避免使用布尔语。现在我的问题是,在可维护性、可读性和可扩展性方面,我应该如
EloquentProductRepository
的类,它与数据库中的产品表交互。有些方法,如all()
方法,有一个名为$onlyActive
的布尔参数。如果为true,则仅获取活动产品,否则返回所有产品
Phpmd告诉我,布尔参数是违反单一责任模式的特定标志。所以我读了一些书,同意应该避免使用布尔语。现在我的问题是,在可维护性、可读性和可扩展性方面,我应该如何重构它
该方法相当简单,如下所示
/**
* Fetches all products
*
* @param boolean $onlyActive Flag for only returning active products
* @return Collection
*/
public function all($onlyActive = true)
{
if ($onlyActive)
{
return $this->model->where('active', true)->get();
}
return $this->model->all();
}
我有两个选择。一种是使用$options数组,而不是键“include_inactive”。另一个选项是创建两个方法
all()
和allWithInactive()
。我目前有3个使用$onlyActive布尔值的方法,因此最后一个选项将向我的类添加3个方法,这可能会使类在方法上相当大。(phpmd希望类的公共方法不超过10个)您基本上有两个不同的函数-所以我会这样做
public function getAll()
{
return $this->model->all();
}
public function getOnlyActive()
{
return $this->model->where('active', true)->get();
}
请注意,函数名-
getAll()
正是这样做的-所有记录,没有异常。getOnlyActive()
正是这样做的——只有活动记录——该函数名中没有“all”,因为它没有得到“all”。我将使用这种方法。看起来是最干净的。现在别指望有更多的选择。