0

我有以下问题,我的 SQLBuilder 的那些方法都是一样的,我该怎么做才能减少代码?

    public function select($fields){
        if(is_array($fields)){
            $this->fields = implode(',', $fields);
        } else {
            $this->fields = $fields;
        } 
        return $this;
    }

    public function from($tables){
        if(is_array($tables)){
            $this->tables = implode(',', $tables);
        } else {
            $this->tables = $tables;
        } 
        return $this;
    }
4

2 回答 2

1

创建一个执行处理的公共私有方法,然后创建使用它们的公共方法

public function select($fields){
    return $this->builddata($fields, 'fields');
}

public function from($tables){
    return $this->builddata($tables, 'tables');
}

private function builddata($data, $storage) {
    if(is_array($data)){
        $data = implode(',', $data);
    }
    $this->$storage = $data; // variable variable

    return $this;
}
于 2013-06-26T12:19:56.520 回答
0

或者

public function action($data, $type){
        if(is_array($data)){
            $this->$type = implode(',', $data);
        } else {
            $this->$type = $data;
        } 
        return $this;
    }

然后

$this->action($data, 'select');
于 2013-06-26T12:42:17.583 回答