使用父类和子类在PHP中实例化mysql连接

问题描述 投票:0回答:1

我正在尝试创建一个Parent类,我可以使用该类进行扩展以调用不同的数据库。我不确定我是否做对了。

我的父类是这样的:

class Db {

    private $db_host;
    private $db_usr;
    private $db_pwd;
    private $db_name;
    private $db_port;

    public function __construct ($db_host, $db_usr, $db_pwd, $db_name, $db_port) {
        $this->connect($db_host, $db_usr, $db_pwd, $db_name, $db_port);
    }

    protected function connect ($db_host, $db_usr, $db_pwd, $db_name, $db_port) {
        $this->mysqli = new mysqli($this->db_host, $this->db_usr, $this->db_pwd, $this->db_name, $this->db_port);

        if ($this->mysqli->connect_error) {
            die("Connection to DB failed: " . $this->mysqli->connect_error);
        } else {
            $this->connected = true;
            return $this->mysqli;
        }
    }

    public function disconnect() {
        if ($this->connected === true) {        
            if ($this->mysqli->close()) {
                $this->connected = false; 
                return true; 
            } else {
                return false; 
            }
        }
    }

    public function __destruct () {
        $this->disconnect();
    }
}

对于我拥有的每个数据库,我都会有一个从Db扩展来的子类,并带有我的凭据。

所以类似:

class Test-Database extends Db {

    protected function __construct () {

        $this->db_host    = "123.123.123.123";
        $this->db_usr     = "myusername";
        $this->db_pwd     = "mypassword";
        $this->db_name    = "my_test_database";
        $this->db_port    = 3306;

        Db::__construct();

    }

}

在开始时,我只有一个班级,但我认为拥有一个家长班级然后可以重用是一个好主意,但我认为我做的不对。应该在父级中还是仅在子级中声明变量?我以为该类可以在构造函数中连接,但是看起来它迫使我传递那些看起来不太好的变量。]​​>

实现父/子类系统以处理PHP中的mysql连接的最简单方法是什么?

我正在尝试创建一个Parent类,我可以使用该类进行扩展以调用不同的数据库。我不确定我是否正确。我的父类是这样的:class Db {private $ ...

class oop mysqli
1个回答
0
投票

确定,因此以下内容似乎可以正常工作:

© www.soinside.com 2019 - 2024. All rights reserved.