2011-01-19 74 views
1

我有PHP類,它包含來自數據庫的查詢數據的函數。第一個是哪一個更適合查詢PHP類?

class x{ 

    public $var1; 
    public $var2; 

    function __construct(){ } 

    function getX($primkey){ 
    $sql = mysql_qyery("SELECT * FROM x_table WHERE primkey='$primkey'"); 
    $row = mysq;_fetch_assoc($sql); 
    $this->var1 = $row['var1']; 
    $this->var2 = $row['var2']; 
    } 

} 

和另一個上是

class x{ 

    public $var1; 
    public $var2; 

    function __construct(){ } 

    function getX($primkey){ 
    $sql = mysql_qyery("SELECT * FROM x_table WHERE primkey='$primkey'"); 
    $row = mysq;_fetch_assoc($sql); 
    return $row; 
    } 

} 

兩級對功能的getX()一些差異。第一類將數據庫中的數據轉換爲類變量,但第二類將數據庫中的數據通過數組返回。

我想了解一下兩類,哪一個更好的性能。哪一個對編程或任何想法都有好處?

問候。

回答

0

隨着第一種形式,你可以靈活地做額外的轉換和非對稱映射。所以從這個意義上說,你真的創建了一個Model類,它可以抽象地表示你的實際數據源。

隨着第二種形式中,如果你按照約定優於配置(COC)的模式,明確你的約定,它可能工作。但是,根據情況,您可能會遇到必須例外的情況。我會建議上面更靈活的方法,作爲對未來例外的預測。

切向:如果您不是純粹出於教育目的或其他合理原因編寫自己的對象映射,您是否看過RedBeanPHP或其他替代方案?

0
class x{ 

    public $row; 

    function __construct(){ } 

    function getX($primkey){ 
    $sql = mysql_qyery("SELECT * FROM x_table WHERE primkey='$primkey'"); 
    this->$row = mysq;_fetch_assoc($sql); 

    } 

} 

我的建議是這樣的。你有封裝正確和它的動態適應未來的要求。

也許你也可以添加getter函數。

0

我將創建一個數據庫適配器,然後創建一個數據映射,並使用該數據映射一個模型。

在這種情況下,以$模型 - 一個電話> find()方法調用的對象找到方法,它調用的數據映射找到方法,發出查詢的數據庫適配器。