在其他类中使用类数据库连接

时间:2016-05-30 09:53:44

标签: php oop mysqli

我有一个与数据库连接的类

$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;
}
)

如何在其他课程中使用该连接? 有人可以帮我解决这个问题吗?

2 个答案:

答案 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