好的,
这是一个复杂的问题,但任何帮助或建议将非常感激。
所以我正在与一个网站合作(使用.htaccess
)将所有流量重定向到load.php
。对于任何sql
功能,我有一个抽象类,它有很多查询语句作为传递参数来定义每个查询的细节的函数。
例如
$table->update("约束")
我正在尝试弄清楚如何设置与数据库的连接load.php
,然后将连接设置为变量($mysqli
)然后可以在我的抽象查询类中引用它,而不必将参数传递给每个查询函数调用。
再次强调,任何帮助或建议将不胜感激。
这是一个函数的示例:
function clearTable (){
$mysqli = dbConnect::connect();
$sql = "TRUNCATE TABLE $this->tablename";
$mysqli->query($sql);
}
如果我在构造函数中连接到数据库并设置$this->mysqli
并替换$mysqli = dbConnect::connect();
with $mysqli = $this->mysqli
,所有查询都不起作用。尽管他们每次通话时都会重新连接。
您应该为此使用依赖注入。
基本上,这意味着需要数据库连接的类不会创建连接,它只是接收已经实例化的实例。
Example
在一些初始化文件中:
// Create the db connection
$db = new Mysqli(......);
// Pass it to the query class that needs it
$queryClass = new QueryClass($db);
然后在你的类文件中:
class QueryClass
{
protected $db;
public function __construct($db)
{
// $this->db will now be the same Mysql instance
$this->db = $db;
}
public function doSomeQuery()
{
$this->db->query(....);
}
}
这样做的好处是,如果您想开始进行一些单元测试,则无需接触 QueryClass。您只需将数据库连接传递到测试数据库即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)