首页 > 解决方案 > mvc - 无法在模型中获取数据库实例

问题描述

我设置了一个基本的 MVC 框架。
问题是我必须将视图中的注册表传递给控制器​​才能调用在注册表中设置的数据库。这似乎不是正确的方法。

提问如何直接在我的模型中获取数据库实例?

初始化.php:

$registry = new registry;

$registry->db = db::getInstance();

基本控制器:

protected $registry;
function __construct($registry) {
    $this->registry = $registry;
}

RegoController 类:

Class regoController Extends baseController {

    var $folder = 'rego';

    public function index() 
    {
        $this->registry->template->show($this->folder.'/index');
    }

    public function view(){
        $this->registry->template->show($this->folder.'/view');
    }

    ....

我可以访问其中的数据库,regoController因为它扩展了baseController.

我的 rego 类(我需要 db 实例的地方):

class rego  {

    private $registry;
    private function __construct($registry) {
        $this->registry = $registry;
    }

    public static function getAllData($registry,$order){
        $sql = "SELECT * FROM rego_details ORDER BY ".$order." ASC";
        $db =  $registry->db;
        $stmt = $db->prepare($sql);
        $stmt->execute();
        $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $results;
    }

如您所见,注册表在函数中作为参数传递。这似乎不对。
我应该延长regoClassor ...?

标签: phpclassregistry-pattern

解决方案


推荐阅读