哪种方法更有效:设置一个类属性;或者返回结果?

时间:2010-02-16 04:37:11

标签: php oop class

请考虑这个例子。 (PHP)

class Database{  
    private $result;  
    private $conn;

    function query($sql){  
        $result = $this->conn->query($sql);  
        // Set the Database::$result ?? Or return the value and avoid setting property?  
        return $result;
        // $this->result = $result;  
    }  
}

这两种方法的优点是什么?它们适用于哪里?

4 个答案:

答案 0 :(得分:1)

基于您的代码,我认为返回结果而不是将其设置为数据库类的属性是有意义的。数据库(实际连接)在其生命周期内将具有多个结果集。因此,如果要使用同一个对象进行多个查询,那么将结果设置为类属性就没有意义。

答案 1 :(得分:0)

为了更好的班级结构,我建议你看一下:

<强> PHP Dependency Injection

这回答了您可能想要遵循的最合适的方法。

答案 2 :(得分:0)

您最近的评论表明,您一次只会保留一个结果集。在这种情况下,我建议将其保存到对象本身(作为对象的数据成员)。

此外,由于您只保留单个结果集,因此可以将类重命名为更具描述性的类。 “数据库”并没有完全概括它。这是一个“ResultSet”。如果它是特定类型的结果集,请考虑命名它,以便它反映您正在获取的数据类型。

答案 3 :(得分:0)

我认为该属性不属于Database,因此请执行以下操作之一:

  1. 按原样返回查询
  2. 返回已使用您的查询设置的QueryObject,但为您提供了对查询结果执行的其他方法(例如:分页,过滤)