php – PDO在课堂内的合并
发布时间:2020-12-13 13:09:07 所属栏目:PHP教程 来源:网络整理
导读:我有一些问题需要理解.我想开始重写一些旧的 MySQL函数代码PDO.它的设置方式是包含这一行的外部文件(除其他外): // db.php file $DB = new dbConnect(SERVER,DB,USER,PASSWORD,3306);function my_autoloader($class){ require_once ($_SERVER['DOCUMENT_ROO
我有一些问题需要理解.我想开始重写一些旧的
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',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',PASSWORD); } public function getName() { $query = "SELECT * FROM job"; $q = $this->pdo->query($query); $data = $q->fetch(PDO::FETCH_ASSOC); // do something } } 还是有其他方法可以做到这一点,我不知道.尝试重新编写我的所有类来合并它似乎很乏味.
不是在构造函数内部创建数据库连接,而是最好使其成为依赖项:
public function __construct(PDO $db,$id) { $this->pdo = $db; $this->ID = $id; } 要使用它,您可以: // $db = new PDO('mysql:host='.SERVER.';dbname='.DB.';charset=utf8',PASSWORD); $info = new info($db,'123'); echo $info->getName(); 这种方法的主要优点是您不再在类中存储任何配置.此外,您还可以传递任何实现PDO的内容,使用模拟数据库启用单元测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |