我有一个与数据库连接的类
$db = new db();
class db {
public $server = 'localhost';
public $user = '';
public $passwd = '******';
public $db = '';
public $dbCon;
function __construct() {
$this->dbCon = mysqli_connect($this->server, $this->user, $this->passwd, $this->db);
}
function __destruct() {
mysqli_close($this->dbCon);
}
}
现在我想创建另一个类并使用这样的连接:
class Categories (
function GetCategory($cat) {
$myQuery = "SELECT * FROM test GROUP BY $cat";
$results = mysqli_query($this->dbCon, $myQuery);
return $results;
}
)
如何在其他课程中使用该连接? 有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
使db类中的$dbCon
成为静态变量,这样您就可以使用db::$dbcon
作为连接变量从类别中访问它。您还可以使静态函数返回静态dbcon
变量,用于检查它是否实际上是一个链接而不是null。
这只是许多可能性的一种解决方案,但可能最容易实现,因为它不太可能需要更多与db的连接,因此静态非常适合它。
静态只不过是生成在它定义的命名空间中的变量,你不需要初始化类来访问它。它的值在对象的所有实例之间共享,因此创建多个DB类实例允许您只返回一个静态(如果它是在先前的DB类实例中设置的。)
class db{
static $link;
static function connect(){
if(self::$link = mysqli_connect(....)){
return self::$link;
} else {
die('could not connect to db');
}
}
static function getcon(){
return isset(self::$link) ? self::$link : self::connect();
}
}
class Categories{
function GetCategory($cat){
$myQuery = "SELECT * FROM test GROUP BY $cat";
return mysqli_query(db::getcon(), $myQuery);
}
}
答案 1 :(得分:-2)
在categories类中创建db类的对象。然后使用该对象相应地查询db。还要确保在db类中使用静态变量。因此,连接变量只创建一次,并将在整个应用程序中使用。
您的db类可能如下所示
Converter
您的类别类可能如下所示
CalendarDatePicker