在扩展模型时使用相同的数据库连接


Codeigniter, use same database connection when extending models

对框架、MVC和OOP都比较陌生…这是一个基本问题:

如果我有这样的Account模型:

class Account_Model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->sybase = $this->load->database( 'sybase', TRUE );
    }
}

然后控制器调用两个模型,它们都是从Account模型扩展的:

class Account_List_Model extends Account_Model
{
    public function __construct()
    {
        parent::__construct();
        $sql = "SELECT ....";
        return $this->sybase->query( $sql )->result();
    }
}

class Account_Details_Model extends Account_Model
{
    public function __construct()
    {
        parent::__construct();
        $sql = "SELECT ....";
        return $this->sybase->query( $sql )->result();
    }
}

我的问题是他们会使用相同的连接吗?我计划以这种方式使用相同的连接,但现在我认为,因为父被构造两次,它将使用两个单独的连接。也许我想太多了。也许我想得太少了。如果不是,单例是唯一的答案还是有其他方法?由于

CodeIgniter在加载Database类时打开连接,因此只有一个连接在使用中(除非您连接到两个或更多数据库)。

在你的模型中有几个方法也是可以的。我通常使用与特定数据库表相关联的一个模型(如果我对密切相关的表使用连接,有时会使用多个模型)。

我认为你很适合继续下去。