シングルトン データベース クラスの 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");