2014-03-12 91 views
0

狀態:接受唯一的答案選項。謝謝。模型的泛型超類應該是靜態還是單態?

我不應該在這裏使用靜態函數和self::而不是$this->。我會在我所有的模型班中使用這個類Dao作爲super class

在DAO類將是超類的所有model classes.

它應該是單身?它應該使用靜態?

任何提示?

<?php 
class Dao extends Object{ 
    private $con; 
    //will put this in defines includes file. Or user from WP. 
    private $dbhost  = "localhost"; 
    private $dbname  = "wpm"; 
    private $dbuser  = "root"; 
    private $dbpass  = "root"; 

    public function __construct() { 
     if(!$this->con){ 
      $this->con = new PDO("mysql:host=$this->dbhost;dbname=$this->dbname",$this->dbuser,$this->dbpass); //will make it generic. 
     } 
    } 

    protected function getCon(){ 
     if(!$this->con){ 
      $this->con = new PDO("mysql:host=$this->dbhost;dbname=$this->dbname",$this->dbuser,$this->dbpass); 
     } 
     return $this->con; 
    } 

    protected function executeQuery($query, $fetchType, $paramArray){ 
     $stmt = $this->getCon()->geprepare($query); 
     $stmt->execute($paramArray); 
     $stmt->setFetchMode($fetchType);//  $stmt->setFetchMode(PDO::FETCH_ASSOC); 
     $result = $stmt->fetch(); 
     return $result; 
    } 

} 

?> 

回答

1

DAO不是模型。這是不同的課程。

DAO類不應該是所有模型的超類。模型原型應該是所有模型的超類。

「Supermodel」應該有像delete(),save(),find()等方法。應將DAO分配給模型變量並以此方式使用。

作爲超模應該是靜態的 - 這取決於。大多數框架在裝載器中僞裝成靜態的,這與我的觀點完全相同,但由於某種原因被鄙視而必須誠實地使用靜態,所以必須使用僞裝。

+0

'刪除()保存()'等太'通用的PHP'我猜?我們必須爲每個「實體」編寫查詢。例如'findUserByEmail()findJobById()'。其次,我們應該在'super model'中使用'singleton'還是'statics'?忽略'dao命名' –

+0

findUserByEmail()不是超級模型方法。 find()和save() - 都是。超模應該是單身還是不單身是一個問題,模型應該是單身還是不單身 –

+0

你可以舉一些'findUserByEmail()'和'find()'的例子代碼。 'singleton'和'static'的問題是要知道1 - 最好的做法,2-任何''connection'爲'線程安全'問題 –