我有一个关于共享连接的问题。我已经尝试了好几个星期来解决这个问题,并尝试了许多不同的方法,比如 PDO 连接、getConnetion 等等。但我仍然没有让它工作。我想要做的是一次创建到我的数据库的连接然后不必再次声明它。在 PHPUnit 中有我熟悉的 setUp 和 tearDown 函数。基本上我想在 setUp 中声明数据库连接,以便在每次测试之前都会有一个到数据库的连接,这是执行单元测试所需的。目前,我被迫在每个函数中声明与数据库的新连接以使其正常工作。否则,我会收到错误消息,指出我在每个函数中都有一个“未定义的变量 $mysqli”,或者它可能会说“调用非对象上的成员函数 query()”。这是我的代码:
<?php
include 'functions.php';
class Test extends PHPUnit_Framework_TestCase {
protected function setUp(){
$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');
public function testCheckbrute(){
$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');
$LessThanFive = checkbrute('200', $mysqli);
$this->assertFalse($LessThanFive);
$FiveFailedLogins = checkbrute('201', $mysqli);
$this->assertTrue($FiveFailedLogins);
}
public function testLogin(){
$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');
$AccountIsLockedFalse = Login("xxxx","xxxx", $mysqli);
$this->assertFalse($AccountIsLockedFalse);
$NoUserExists = Login("xxxx","xxxxx", $mysqli);
$this->assertFalse($NoUserExists);
}
protected function tearDown(){
$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');
$mysqli->query("DELETE FROM login_attempts WHERE user_id IN (200, 201)");
$mysqli->query("DELETE FROM members WHERE id IN (200, 201)");
}
}
?>
任何不需要太多重构或时间的具体简单解决方案?这是我不想在每个函数中继续编写的代码片段:
$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');