我在理解这一点时遇到了一些问题。我想开始重写一些旧的 MySQL 函数代码 PDO。它的设置方式是包含此行的外部文件(除其他外):
// db.php file
$DB = new dbConnect(SERVER,DB,USER,PASSWORD,3306);
function my_autoloader($class)
{
require_once ($_SERVER['DOCUMENT_ROOT']."/includes/".'class.' . $class . '.php' );
}
spl_autoload_register('my_autoloader');
这将创建与我的数据库的连接。这包含在我页面的最顶部,并且还会加载我的所有课程。现在,如果我想使用 PDO 创建一个新连接,我会执行以下操作:
$conn = new PDO('mysql:host='.SERVER.';dbname='.DB.';charset=utf8',USER, PASSWORD);
但是,我不能将这行代码放在单独的文件中并从类中调用 PDO,如下所示:
require_once 'db.php';
class info
{
protected $ID;
public function __construct($id)
{
$this->ID = $id; //
}
public function getName()
{
$query = "SELECT * FROM job";
$q = $conn->query($query);
$data = $q->fetch(PDO::FETCH_ASSOC);
//do something with $data
}
}
这是否意味着我必须通过如下聚合在构造函数中建立连接?
require_once 'db.php';
class info
{
protected $ID;
protected $pdo;
public function __construct($id)
{
$this->ID = $id; //
$this->pdo = new PDO('mysql:host='.SERVER.';dbname='.DB.';charset=utf8',USER, PASSWORD);
}
public function getName()
{
$query = "SELECT * FROM job";
$q = $this->pdo->query($query);
$data = $q->fetch(PDO::FETCH_ASSOC);
// do something
}
}
还是有另一种我不知道的方法。尝试重新编写我所有的课程以纳入这一点似乎很乏味。