[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: стоит ли использовать обертки для mysqli
123456
Год назад на быструю руку написал класс-обертку для mysqli

Сегодня зашел в этот класс и ужаснулся. Какой он бесполезный!

Кто использует обертки для mysqli?(скиньте примеры)
Стоит ли их вообще использовать?


PS. в своем классе не вижу смысла. Бессмысленная бредятина. Видимо год назад я мыслил как-то по другому. вижу только один плюс - логирование ошибок
	#
#
# Класс обёртка для mysqli
#
#


class DB
{

// Ссылка на лог ошибок БД
private static $patch_log_bd = PATCH_LOG_BD;


// Ссылка на лог запросов БД
private static $patch_log_sql = PATCH_LOG_SQL;


// Данные для подключения
private static $host = BD_SERV;
private static $user = BD_USER;
private static $pass = BD_PASS;
private static $db = BD_BASE;


// Кодировка
private static $charset = BD_CHARSET;


// Режим отладки
private static $debug = DEBUG;


// Объект коннекта к БД
private static $mysqli = false;


// Количество запросов на странице
private static $count = 0;


//----------------------------------------

// Коннект к БД


public static function connect()
{
$mysqli = new mysqli(self::$host, self::$user, self::$pass, self::$db);

if ($mysqli->connect_error)
die('NOT Connecting with DB');

$mysqli->set_charset(self::$charset);

self::$mysqli = $mysqli;
}


//----------------------------------------

// Получаем количество выполненых запросов


public static function getCount()
{
return self::$count;
}


//----------------------------------------

// Выполняет запрос в БД по предоставленному SQL


public static function q($sql, $type = null)
{
// Если соединение не было не установлено, то устанавливаем
if (!self::$mysqli)
self::connect();

// это наша статистика по запросу
$start = microtime(true);
self::$count++;


$res = self::$mysqli->query($sql);

if (!$res)
{
// Запись ошибки в лог
$trace = debug_backtrace();
$error = date("Y-m-d H:i:s") .":\n ". $trace[0]['file'] ."\n". $trace[0]['line'] ."\n". $sql ."\n". mysqli_error(self::$mysqli);

file_put_contents(self::$patch_log_bd, strip_tags($error)."\n\n", FILE_APPEND);

die('Error DB query');
}
else if (self::$debug)
{
file_put_contents(self::$patch_log_sql, self::$count .") ". strip_tags($sql)."\n\rtime: ". (microtime(true)-$start) ."\n\r", FILE_APPEND);
}

switch ($type)
{
case 'assoc' : return $res->fetch_all(MYSQLI_ASSOC); break;
case 'num' : return $res->fetch_all(MYSQLI_NUM); break;
case 'both' : return $res->fetch_all(MYSQLI_BOTH); break;
}

return $res;
}


//----------------------------------------

// Обертка real_escape_string

public static function escape($data)
{
// Если соединение не было не установлено, то устанавливаем
if (!self::$mysqli)
self::connect();

return self::$mysqli->real_escape_string($data);
}


//----------------------------------------

// ид полседней записи


public static function insert_id()
{
return self::$mysqli->insert_id;
}

// сколько было изменено строк последним UPDATE
public static function affected_rows()
{
return self::$mysqli->affected_rows;
}


//Получаем все результаты
public static function clear_result()
{
self::$mysqli->next_result();

return true;
}

}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.