gpt4 book ai didi

php - 将数据连接传递给 PHP 类/方法的推荐方法?

转载 作者:行者123 更新时间:2023-11-29 04:01:56 24 4
gpt4 key购买 nike

截至目前,我的每个页面顶部都包含一个数据库连接字符串。然后我将数据库连接传递给类中的方法,如下所示:

public function select($db) {
//Code here
}

页面代码:

$login_user->select($db);

我的想法是,如果我想查询不同的数据库,我可以在名为 $db2 的包含文件中创建一个新的连接字符串,然后我只传递该值而不是 $db。

这是执行此操作的标准方法还是您有不同的建议?

最佳答案

将连接字符串传递给您的类有很多缺点,也没有任何好处。您走在正确的轨道上,但您想传递数据库对象而不是连接字符串。

依赖注入(inject)是让你的类访问数据库的好方法,这只是意味着将依赖(即数据库对象)传递给需要它们的对象,而不是对象本身从一些全局变量中获取依赖亲切。

我建议您在类上使用类似 setDb() 的方法来传递数据库对象,然后将其存储为属性以供任何内部使用。

例如,假设您已经在初始化脚本中创建了数据库对象 $db:

class SomeClass
{
protected $db;

public function setDb($db)
{
$this->db = $db;
}

public function something()
{
// do some query on the database using $this->db
}
}

$obj = new SomeClass();
$obj->setDb($db);

$obj->something();

DI 为您提供了您提到的好处:无需在您的方法中做大量工作即可轻松切换数据库的能力。还有其他好处,即易于测试。

关于php - 将数据连接传递给 PHP 类/方法的推荐方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com