Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

DB_Type: преобразование сложных типов PostgreSQL (ARRAY, ROW, HSTORE) в PHP и обратно (Дмитрий Котеров)
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Fri Apr 03, 2009 1:49 am (написано за 50 секунд)
   Post subject: DB_Type: преобразование сложных типов PostgreSQL (ARRAY, ROW, HSTORE) в PHP и обратно
Reply with quote

DB_Type — это фреймворк для преобразования сложных типов PostgreSQL 8.3+ в их аналоги на PHP и обратно. С ее помощью вы можете работать с полями сложного типа (к примеру, двумерным массивом композитных типов) так же просто, как с привычными массивами PHP.
     
В будущем добавится поддержка и других СУБД, в которых имеются сложные типы. Пока же мы будем говорить о PostgreSQL. (Кстати, в MySQL сложных типов нет, поэтому "низкоуровневые" типы DB_Type, такие как Date, Timestamp и т. д., можно использовать в MySQL уже сейчас, если это кому-то понадобится.)

Поддерживаются следующие типы данных и любые их вложенные комбинации:

* Массивы элементов произвольного типа (в том числе многомерные).
* Композитные типы и ROWTYPE (в частности, сами содержащие композитные поля или поля-массивы).
* Hstore (в том числе содержащие сложные элементы).
* Прочие типы: TIMESTAMP (преобразуется в Unix time), DATE, TIME, BOOLEAN и т. д.

dklab.ru/lib/DB_Type/

Last edited by Дмитрий Котеров on Sun Aug 07, 2011 8:12 pm; edited 2 times in total
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 386
   поощрить/наказать


PostPosted: Wed May 06, 2009 4:26 pm (спустя 1 месяц 3 дня 14 часов 37 минут; написано за 52 секунды)
   Post subject:
Reply with quote

а как её установить ?
скопировал все файлы в denwer\scripts\lib, но пишет Fatal error: Class 'DB_Pgsql_Type_Array' not found. видимо что то где то надо дописать, но где и что ? Подскажите пожалуйста
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Wed Jul 01, 2009 5:25 pm (спустя 1 месяц 26 дней 59 минут; написано за 39 секунд)
   Post subject:
Reply with quote

При чем тут вообще Денвер? :-)
Это же PHP-библиотека. Скопируйте туда, где у вас находятся другие файлы с классами.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 386
   поощрить/наказать


PostPosted: Sun Aug 07, 2011 8:10 pm (спустя 2 года 1 месяц 6 дней 2 часа 44 минуты; написано за 36 секунд)
   Post subject:
Reply with quote

Вышла новая версия библиотеки (2.0), несовместимая со старой версией DB_Pgsql_Type. Главным образом, переименовались классы (было - DB_Pgsql_Type_*, стало - DB_Type_* и DB_Type_Pgsql_*), добавились юнит-тесты, а также были исправлены незначительные баги.

Рекомендуем всем, кто пользуется, обновиться. В папке utils лежит скрипт MIGRATE_100_TO_200.pl, который переименует старые классы в новые, если запустить его для вашего проекта.
Back to top
Sufir
Guest





Карма: 386
   поощрить/наказать


PostPosted: Fri Jun 15, 2012 5:23 pm (спустя 10 месяцев 7 дней 21 час 13 минут; написано за 2 минуты 1 секунду)
   Post subject:
Reply with quote

Большое спасибо, Дмитрий, прекрасная библиотека.

А почему DB_Type_Int->input() возвращает string?
Code (php): скопировать код в буфер обмена
// Почему не
return (int) $value;
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Fri Jun 22, 2012 12:29 am (спустя 6 дней 7 часов 6 минут; написано за 1 минуту 2 секунды)
   Post subject:
Reply with quote

Наверное, на всякий случай - вдруг СУБД 64-битная, а PHP работает на 32-битной машине. Если привести к (int), то большие числа могут побиться, а так хоть будет прозрачность...
Back to top
View user's profile Send private message Send e-mail
hasseb432
Заглянувший



Joined: 19 Nov 2014
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Sat Dec 13, 2014 11:07 am (спустя 2 года 5 месяцев 21 день 10 часов 37 минут; написано за 16 секунд)
   Post subject:
Reply with quote

В будущем добавится поддержка и 300-135 dumps - testking.net (www.testking.net/testking-300-135.htm) других СУБД, в которых имеются сложные типы. Пока же мы будем говорить о ПостгреСQЛ. (Кстати, в МыСQЛ сложных типов нет, поэтому "низкоуровневые" типы DB_Type, такие как Date, Timestamp и т. д., можно использовать в MySQL уже сейчас, если это кому-то понадобится.)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

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

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML