如何在php类中使用单例作为连接

时间:2013-10-10 17:11:20

标签: php class singleton database-connection

我是OOP php的新手,现在我试图理解整体模式,但我在所有类的共享数据库连接的某个地方。 我指的是这个answer ,它使db连接成为一个单独的类,并在每个构造函数中调用它。

这是单例数据库类,应该做连接部分,我有自动加载集

class DatabaseConnection{

  private static $instance;
  private $dbc;

  private function __construct(){
   $this->dbc = mysqli_connect(...);
  }

  public static function connectDb(){
    if(empty(self::$instance)){
    self::$instance = new DatabaseConnection;
    }
    return self::$instance;
  }
}

这是我的类,我试图在构造函数

中连接db
class SlideShow {

    private $dbc;
    private $result;

    function __construct() {
        $this->dbc=DatabaseConnection::connectDb();
        $this->result=$this->getSlideShow();
    }

    private function getSlideShow(){
        $q = "SELECT * FROM table"; 
        $this->result = mysqli_query($this->dbc, $q);
            //the error stated $dbc , object given
    }

}

我的SlideShow类中有一个问题,说 $ dbc是对象',我的问题是我做得对吗?如果是,我如何解决这些问题,我很难理解发布的answer

1 个答案:

答案 0 :(得分:1)

应该是

    $this->result = mysqli_query($this->dbc->dbc, $q);
                                            ^^^^----

注意对象引用中的doubled dbc。第一个是dbc类中的私有Slideshow属性,第二个dbc是在数据库类中创建的实际数据库句柄。