首页 > 后端开发 > php教程 > 如何在 PHP 中跨多个类正确使用 PDO 连接?

如何在 PHP 中跨多个类正确使用 PDO 连接?

Barbara Streisand
发布: 2024-12-21 00:50:08
原创
1033 人浏览过

How to Properly Use a PDO Connection Across Multiple Classes in PHP?

如何在其他类中使用 PDO 连接?

理解令人费解的错误

一条错误消息,指出“未捕获错误:调用未定义的方法数据库”当尝试在单独的类中使用 PDO 连接时,可能会出现 ::prepare()"。此错误源于对面向对象编程 (OOP) 如何互连对象的误解。

解决问题

1.重新思考您的数据库类:
现有的数据库类没有任何意义。相反,如果它扩展了 PDO 的功能,则应专注于创建包装类。

2.建立中央数据库连接:
使用 PDO 或增强的数据库类实例化独立的 $db 对象。这个单一连接将作为所有未来数据库活动的基石。

3.将连接作为构造函数参数传递:
每个需要数据库访问的类都应该接收 $db 连接作为构造函数参数。这种方法保证了整个应用程序对数据库的无缝访问。

综合示例

考虑以下改进代码库:

database.php:

$host = '127.0.0.1';
$db   = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
    \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
    \PDO::ATTR_EMULATE_PREPARES   => false,
];
$pdo = new \PDO($dsn, $user, $pass, $opt);
登录后复制

u ser.php:

class User {
    /* Properties */
    private $conn;

    /* Get database access */
    public function __construct(\PDO $pdo) {
        $this->conn = $pdo;
    }

    /* List all users */
    public function getUsers() {
        return $this->conn->query("SELECT username, usermail FROM user")->fetchAll();
    }
}
登录后复制

app.php:

include 'database.php';
$user = new User($pdo);
$list = $user->getUsers();

foreach($list as $test) {
    echo $test["username"],"\n";
}
登录后复制

这个精炼的代码库举例说明了多个类中 PDO 连接的正确使用,确保无错误操作和优雅的编码实践。

以上是如何在 PHP 中跨多个类正确使用 PDO 连接?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板