goDB 1.3: новый говнокод и ебическая сила природы в одном флаконе. Домохозяйки выбирают goDB.
В новой версии при сохранении совместимости с mysqli добавлены надстройки по следующим пунктам:
Транзакции
- Станартная схема:
BEGIN
+COMMIT
(ROLLBACK
) - Вложенные транзакции, где транзакции нижних уровней не знают о верхних.
- Различные способы отката из вложенных транзакций и его обработки.
- Выполнение функций в транзакциях
Мультизапросы
- Мультизапросы по goDB-схеме: с шаблонами, данными и форматами разбора.
- Получение всех результатов сразу или получение только нужных
- Различные способы формирования мультизапроса
- Обработка ошибок на основе исключений
- Не нужно думать о выборке всех результатов и их очистке
- Мультизапросы в транзакциях и без них.
Подготовленные выражения
- goDB-схема (шаблон, данные, формат результата) вместо
bind_param
,bind_result
- Полная поддержка форматов представления результатов
- Обработка ошибок на основе исключений.
- Создание и выполнение подготовленного выражения одним запросов.
- Кэширование подготовленных выражений.
- Именованные подготовленные выражения.
Кроме того, добавлены следующие возможности:
Объект-ссылка
Объект ссылка разделяет подключение с основным объектом, но может иметь другие настройки (префикс, отладка, декоратор запросов).
По мелочи
Формат разбора bool
.
Метод __invoke()
.
В PHP 5.3 запросы можно выполнять прямо так: $one = $db('SELECT 1', null, 'el');
Методы getPrefix()
, getDebug()
и т.д.
Реструктуризация юнит-тестов: теперь вместо одного файла папка с тестами.
@todo
Все предложения пишите на форуме или присылайте на мыло.
В ближайшее время возможно следующее:
- Макроподстановки
- Разбиение godb.php на несколько файлов
- Формат разбора: объект для разбора :)
- Начало работы над goDB 2.0
- Нормальные шрифты и цвета для доки
Взять себе
Взять себе
goDB 1.3.0 (zip, 31K)
goDB 1.3.0 (zip, 31K)
Круто ты взялся )) Но не усложняй сильно…
kostyl, 11.10.2010, 13:43
есть в этой версии досадный баг: в goDBPrepare->execute знак «&» явно лишний вот в этом месте
if ($this->paramsCount > 0) {
$params = array($this->types);
foreach ($data as $d) {
$params[] = &$d;
}
call_user_func_array(array($stmt, ‘bind_param’), $params);
}
webpavilion, 3.12.2010, 18:12
webpavilion, на какой версии php он лишний?
kostyl, 4.12.2010, 15:59
webpavilion, спасибо за комментарий. Однако, знак «&» здесь был введён намеренно — дабы аргументы в bind_param через call_user_func_array передавались по ссылке.
А в чём выражается баг? Что-то не так работает?
vasa_c, 4.12.2010, 16:00
в 5.2.10 в $params записываются 1, соответственно в базу пишутся они же, если убрать все работает нормально. зачем именно в этом контексте передавать по ссылке?
webpavilion, 5.12.2010, 13:33
>>webpavilion
>>если убрать все работает нормально
А если не убирать, что происходит?
kostyl, 5.12.2010, 14:55
http://paste.org/pastebin/view/25772 первый вариант считаю правильным, второй соответственно нет
webpavilion, 5.12.2010, 15:37
webpavilion . Вообще то инкремент со строками в php не рекомендуется, читай ман…
kostyl, 5.12.2010, 15:42
>>kostyl
вообще то это просто пример что бы показать проблему, уж как нибудь сам разберусь что читать.
webpavilion, 5.12.2010, 15:44
webpavilion, по ссылке нужно передавать, потому что bind_param() принимает аргументы по ссылке.
Странно, что в 5.2 без этого работает нормально, у меня в 5.3 выдаёт:
Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given
Но это решилось добавлением ещё одного «&»:
Проверьте, пожалуйста, у себя
vasa_c, 5.12.2010, 16:44
>>vasa_c
с еще одним & в 5.2 работает корректно.
webpavilion, 5.12.2010, 16:55