用于与数据表建立新PDO连接的私有变量


private variable for new PDO connection with datatables

我将使用我为pdo风格的数据表找到的php类。文件顶部有以下内容:

class TableData {
private $_db;
public function __construct() {
    try {
        $host       = 'localhost';
        $database   = 'my_database';
        $user       = 'myusername';
        $passwd     = 'mypassword';
        $this->_db = new PDO('mysql:host='.$host.';dbname='.$database, $user, $passwd, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => true));
    }   
    catch (PDOException $e) {
        error_log("Failed to connect to database: ".$e->getMessage());
    }
}

我对课程和写作不太熟悉。我的问题是,对于我网站的其他部分,我已经包含了一个php连接文件。。。是否可以使用下面的默认连接并去掉类中的连接?换句话说,我只想能够像往常一样从下面使用$db,而不是创建私有的$_db;如上所示。可能与否?

// db config
$db_host        = 'localhost';
$db_database    = 'my_database';
$db_user        = 'myusername';
$db_pass        = 'mypassword'; 
//db connection
try {
$db = new PDO("mysql:host=$db_host;dbname=$db_database;charset=utf8", $db_user, $db_pass, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => true));
}
catch(PDOException $e) {
error_log("Failed to connect to database: ".$e->getMessage());
}

我会在外部创建您的PDO类,然后将其注入到您的类中。这样,您就只能运行一个数据库连接。

class TableData {
    /** @var 'PDO */
    protected $pdo;
    public function __construct('PDO $pdo) {
         $this->pdo = $pdo;
    }
}
$class = new TableData($db);