Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 避免$onlyActive布尔参数_Php_Methods_Laravel 4_Boolean - Fatal编程技术网

Php 避免$onlyActive布尔参数

Php 避免$onlyActive布尔参数,php,methods,laravel-4,boolean,Php,Methods,Laravel 4,Boolean,我最近开始使用phpmd来检测错误的编码实践并修复它们。我的项目使用Laravel4PHP框架,我实现了一个存储库模式 因此,我有一个名为EloquentProductRepository的类,它与数据库中的产品表交互。有些方法,如all()方法,有一个名为$onlyActive的布尔参数。如果为true,则仅获取活动产品,否则返回所有产品 Phpmd告诉我,布尔参数是违反单一责任模式的特定标志。所以我读了一些书,同意应该避免使用布尔语。现在我的问题是,在可维护性、可读性和可扩展性方面,我应该如

我最近开始使用phpmd来检测错误的编码实践并修复它们。我的项目使用Laravel4PHP框架,我实现了一个存储库模式

因此,我有一个名为
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”。

我将使用这种方法。看起来是最干净的。现在别指望有更多的选择。