模型的泛型超类应该是静态的还是单例?

时间:2014-03-12 05:44:53

标签: php pdo

状态:接受唯一的答案选择。谢谢。

我不应该在这里使用静态函数和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 个答案:

答案 0 :(得分:1)

DAO不是模特。这是不同的课程。

DAO类不应该是所有模型的超类。模型原型应该是所有模型的超类。

&#34;超模&#34;应该有像delete(),save(),find()等方法。应将DAO分配给模型变量并以此方式使用。

至于超级名模应该是静态的 - 这取决于。大多数框架都掩盖了加载器中的静态,这与我的观点完全相同,但是由于某些原因而被鄙视的诚实静态因此必须使用伪装。