为什么不在模型类中使用全局$ db?

时间:2015-06-03 06:45:51

标签: php oop model-view-controller

假设我们有一个MVC模式。如果我们有这样的事情:

blog_controller.php

<?php

class c_blog{
    private $model;

    public function __construct(){
         include( [model_path] );
         $this->model = new m_blog();
    }

    public function post_list(){
         return $this->model->get_list();
    }
}

blog_model.php

<?php

class m_blog{
     public function get_list(){
         global $db;
         $sel = $db->query("...");
         $sel = $db->fetch_array($sel);
         return $sel;
     }
}

的index.php

<?php

$db = new database();
include "blog_controller.php";
$blog = new c_blog();
var_dump( $blog->post_list() );

?>

为什么以上示例不好,很多开发人员想要OOP class m_blog extends database{}

我只想要优点和缺点,因为我在超过15个流量高的网站上使用这种“担心”方法而且我没有问题(其中一些网站使用多数据库并且很容易改变全局{ {1}},全球$db。)

谢谢!

1 个答案:

答案 0 :(得分:0)

为什么不使用继承?

<?php

class model {
    private $db;

    public function __construct() {
        $this->initDb();
    }

    private function initDb();
}

class c_blog {
    private $model;

    public function __construct(){
         include( [model_path] );
         $this->model = new m_blog();
    }

    public function post_list(){
         return $this->model->get_list();
    }
}

class m_blog extends model{
    public function __construct() {
        parent::__construct;
    }
     public function get_list(){
         $sel = $this->db->query("...");
         $sel = $this->db->fetch_array($sel);
         return $sel;
     }
}