<?php class DB { private static $ourInstance; private static $config = [ 'host' => 'localhost', 'username' => 'core', 'password' => '123456', 'dbname' => 'core', 'driver' => 'mysql', ]; private $db; public $countQuery = 0; private function __construct(PDO $db) { $this->db = $db; } public static function getInstance() { if (self::$ourInstance == null) { $config = self::$config; $db = new PDO( $config['driver'].':host='.$config['host'].';dbname='.$config['dbname'], $config['username'], $config['password'], [ PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ] ); self::$ourInstance = new self($db); } return self::$ourInstance; } public function __call($name, $arguments) { return call_user_func_array([$this->db, $name], $arguments); } public function query($query, $params = []) { $this->countQuery++; if (count($params)) { $sth = $this->db->prepare($query); $sth->execute($params); return $sth; } else { return $this->db->query($query); } } public function count($query, $params = []) { return $this->query($query, $params)->fetch(PDO::FETCH_OBJ)->count; } } $db = DB::getInstance(); ?>