go\DB 2.0.1 и github.com

Перенёс go\DB 2 с гуглокода на гитхаб: https://github.com/vasa-c/go-db.

А заодно и обновил чуть-чуть.

goDB + PostgreSQL

А в это время goDB продолжает развиваться благодаря волонтёрам со всего мира.
Вот и Алексей Полев aka dallone запилил адаптер для Постгри.
Ура Далону!

goDB: юбилейчик

Сегодня ровно 3 года, как я осмелился выложить свою поделку, предназначенную для работы с мускулем из PHP.

Как ни странно, за прошедшее время я не проникся к ней отвращением, в отличии от большинства других моих поделок. Периодически юзаю в своих проектах, иногда дорабатываю и даже сделал попытку сотворить чуть менее говнокодный вариант с поддержкой других баз.

Что особо удивительно, её даже качают другие люди, несмотря на то, что «подобное было тыщу раз», «есть намного лучше» и «мне ты это дерьмо не втюхаешь». За прошлый год библиотечку скачали 1 597 раз с 992 уникальных IP. В прошедшем же январе за этим глупым занятием был застукан 121 уникальный айпишник. Вот график (толку в нём нет, просто для внесения разнообразия в унылый текст):

График скачиваний goDB за 2010 год

У библиотеки даже появился один почётный пользователь.

Если вас угораздило где-то использовать goDB, пожалуйста, не постесняйтесь кинуть мне адресок: я их соберу в одном месте. И мне понтов больше и вам ссылочка лишняя :)

goDB 1.3: Транзакции и все, все, все

goDB 1.3: новый говнокод и ебическая сила природы в одном флаконе. Домохозяйки выбирают goDB.

В новой версии при сохранении совместимости с mysqli добавлены надстройки по следующим пунктам:

Транзакции

  1. Станартная схема: BEGIN + COMMIT(ROLLBACK)
  2. Вложенные транзакции, где транзакции нижних уровней не знают о верхних.
  3. Различные способы отката из вложенных транзакций и его обработки.
  4. Выполнение функций в транзакциях

Мультизапросы

  1. Мультизапросы по goDB-схеме: с шаблонами, данными и форматами разбора.
  2. Получение всех результатов сразу или получение только нужных
  3. Различные способы формирования мультизапроса
  4. Обработка ошибок на основе исключений
  5. Не нужно думать о выборке всех результатов и их очистке
  6. Мультизапросы в транзакциях и без них.

Подготовленные выражения

  1. goDB-схема (шаблон, данные, формат результата) вместо bind_param, bind_result
  2. Полная поддержка форматов представления результатов
  3. Обработка ошибок на основе исключений.
  4. Создание и выполнение подготовленного выражения одним запросов.
  5. Кэширование подготовленных выражений.
  6. Именованные подготовленные выражения.

Кроме того, добавлены следующие возможности:

Объект-ссылка

Объект ссылка разделяет подключение с основным объектом, но может иметь другие настройки (префикс, отладка, декоратор запросов).

По мелочи

Формат разбора bool.

Метод __invoke().
В PHP 5.3 запросы можно выполнять прямо так: $one = $db('SELECT 1', null, 'el');

Методы getPrefix(), getDebug() и т.д.

Реструктуризация юнит-тестов: теперь вместо одного файла папка с тестами.

@todo

Все предложения пишите на форуме или присылайте на мыло.

В ближайшее время возможно следующее:

  1. Макроподстановки
  2. Разбиение godb.php на несколько файлов
  3. Формат разбора: объект для разбора :)
  4. Начало работы над goDB 2.0
  5. Нормальные шрифты и цвета для доки

Взять себе

Взять себе
goDB 1.3.0 (zip, 31K)

goDB 1.2.2

Ничто не заставляет делать какое-то дело, как необходимость делать другие более важные дела.
Поэтому goDB продолжает радовать нас новыми версиями.

В новой версии (1.2.2):

Плейсхолдер ?bool: вставка значения для столбца типа BOOL.

Формат представления результата kassoc и его подвид kassoc:$col.

Формат же vars теперь позволяет выборку по одному столбцу: его значение станет как ключём массива, так и его элементом.

Плюс добавлены исключения goDBExceptionFetchUnknown и goDBExceptionFetchUnexpected.
Также местами переписан код.

Сам класс теперь можно просмотреть прямо на сайте не скачивая архивов.

Ну и конечно, можно всё-таки скачать архив (ZIP, 5K)

goDB 1.2.1: теперь и в юнит-тестах

В версии 1.2.1 исправлен незначительный бажок.

А чтобы снизить вероятность незначительных бажков в будущем, добавлены unit-тесты.

Для юнит-тестов используется PHPUnit.

~/godb$ phpunit --colors goDBTest.php
PHPUnit 3.5.0 by Sebastian Bergmann.

............................................................ 60 / 60


Time: 4 seconds, Memory: 4.25Mb

OK (60 tests, 126 assertions)

~/godb$

goDB 1.2

Наконец, впервые за несколько лет, обновил документацию по goDB. Она по-прежнему убогонькая и пафосная, но теперь полностью описаны все новые возможности.

Ну и, так как просто описывать старьё скучно, выпустил новую версию.

Длинные плейсхолдеры

Для всех плейсхолдеров теперь есть «длинные» синонимы:

$db->query('INSERT INTO `table` SET ?set', array($set));
$db->query('INSERT INTO `table` VALUES ?values', array($values));
...

Полный список в документации.

Именованные плейсхолдеры

$data = array(
	'one'   => 'Раз',
	'two'   => 'Два',
	'three' => 'Три',
);
$pattern = 'SELECT * FROM `table` WHERE `one`=?:one AND `two`=?:two OR `three`=?:three ORDER BY ?:one ASC';

Можно комбинировать тип плейсхолдера и имя: ?set:name.

В одном запросе использовать простые и именованные плейсхолдеры нельзя.

Подробнее в документации.

Ещё по-немногу

Добавлены новые параметры конфигурации charset и link:

$config = array(
	'host' => 'localhost',
	...
	'charset' => 'utf8',
);

Не нужно при подключении вызывать SET NAMES. Особенно удобно для отложенных подключений.

link позволяет сделать ссылку на другую базу. Подробнее в разделе о пространстве имён.

Также несколько изменена иерархия подключений.

Несовместимости

При правильном использовании несовместимостей нет. А так, немного есть.

Скачать последнюю версию (ZIP)

goDB 1.1.3

После года разгильдяйничества, решил снова заняться своей библиотечкой для работы с MySQL.

Изменения в версии 1.1.3 незначительны, но, надеюсь, что вскоре будет что-нибудь поинтереснее.

Остальной текст под катом