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


How to use singleton as connection in php class

我是OOP php的新手,现在我试图了解整体模式,但我在共享所有类的数据库连接时遇到了麻烦。我指的是这个答案,它使数据库连接成为单例类并在每个构造函数中调用它。

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

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
    }
}

我在幻灯片课上遇到了一个问题,说$dbc是对象',我的问题是我做得对吗?如果是,我该如何解决这些东西,我很难理解发布的答案

它应该是

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

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