DBSimple: поддержка PHP 5.3, PDO, MySQLi и ленивой инициализацией

17 Май
2012

Многим здесь известна замечательная библиотека Дмитрия Котерова для работы с БД — DBSimple. Также известны и ее недостатки: несовместимость с PHP 5.3 и отсутствие поддержки современных драйверов MySQL.

Решение проблем


Некоторое время назад Ivan1986 форкнул эту библиотеку и расширил ее функционал.

Так, например, была добавлена поддержка ленивой инициализации:

// подключаемся сразу после инициализации

require_once "DbSimple/Generic.php";

$DB = DbSimple_Generic::connect("mysql://login:password@host/database");



// не подключаемся до первого запроса

require_once "DbSimple/Connect.php";

$DB = new DbSimple_Connect("mysql://login:password@host/database");


При ленивой инициализации соединение с базой не будет установлено до первого запроса.

Также была добавлена поддержка PDO

// используем PDO

require_once "DbSimple/Connect.php";

$DB = new DbSimple_Connect("mypdo://login:password@host/database");



SQLite

// используем SQLite

require_once "DbSimple/Connect.php";

$DB = new DbSimple_Connect("sqlite://login:password@host/database");



и несколько патчей:
мультиинсерт (?a и двумерный массив в «(‘1′,’2′,’3’) (‘4′,’5′,’6’) …»
разворот двумерных массивов в группы условий AND и OR
поддержка плейсхолдера ?s — подзапрос с проверкой типов, тоесть неэкранированные данные вставить нельзя, а кусок запроса с подстановкой параметров можно
поддержка конструкций {?… } — условная вставка и {… |… } — аналог else


А где же MySQLi?


Некоторое время назад мне захотелось в одном из моих проектов опробовать MySQLi. Я форкнул DBSimple от Ivan1986 и добавил в нее поддержку данного драйвера. Скачать библиотеку вы можете по этой ссылке.

Внимание: я настоятельно рекомендую использовать php-mysqlnd вместо php-mysql. Кроме того, работа MySQLi была протестирована только под mysqlnd. Я добавил поддержку и libmysql тоже, но мне негде протестировать работу библиотеки.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх