guid = uniqid(); $this->sql = new \mysqli('p:'.$server,$user,"{$pass}",$db);; if($this->sql->connect_error){ throw new \Exception('Mysqli Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); } self::$connections[] = $sql; } public function __destruct(){ $this->sql->rollback(); $this->sql->close(); foreach($this->queries as $query){ unset($query); } self::$connections = array_diff(self::$connections, [$this]); } public function __invoke(){ return $this->sql; } public function __get($name){ switch($name){ case 'error': return $this->sql->error; break; case 'insert_id': return $this->sql->insert_id; break; } } public function __toString(){ return $this->guid; } /** * Returns a Query object based on inputs * * @method query * @param {String} sql The sql expression to run * @param {String=null} [types] A string containing all the types of arguments being passed * @param {Mixed} [bindings]* The bindings to use in the sql statement * @return {Query} Returns the query object */ public function query(...$args){ return new SQL\Query(...array_merge([$this], $args)); } public function escape($s){ return $this->sql->escape_string($s); } public function charset($charset){ return $this->sql->set_charset($charset); } public static function make_referenced(&$arr){ $refs = []; foreach($arr as $key => $value){ $refs[$key] = &$arr[$key]; } return $refs; } public static function shutdown(){ foreach(self::$connections as $sql){ unset($sql); } } } register_shutdown_function(function(){ SQL::shutdown(); }); ?>