0

シングルトン データベース クラスの query() メソッドを作成しようとしています。私はこれを持っていますが、まだ飛んでおらず、インスピレーションを探していました。

<?php
class Database
{
 static private $instance = null;
 protected $mysqli;

 static public function getInstance()
 {
     if (null === self::$instance) {
         self::$instance = new self;
     }
     return self::$instance;
 }

 private function __construct(){
        if(!$this->mysqli = new mysqli('localhost','user','pass','db'))
            throw new Exception('Error - Database connection');
 }

 public function query($query) {
    while ($this->mysqli->query($query))
    {
        $row = $this->mysqli->fetch_assoc();
    }
    return $row; // loop through array
 }

 private function __clone(){}

}
?>

正しい道を進んでいるかどうかは完全にはわかりません。mysqli はこのコンテキストで動作しますか? たとえば、Mysqli クラスには、そのクラスの一部としてすでに query() メソッドがあります。ここで名前空間の衝突を導入していますか?

私のクエリメソッドは、あらゆる種類のSQLステートメントを処理します。

クライアントコードの例:

$DB = Database::getInstance();
$DB->query("SELECT * FROM t");
$DB->query("DELETE FROM t WHERE id=2");
$DB->query("UPDATE u SET col = 'random' WHERE id=4");
4

0 に答える 0