Обновить

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

я так понимаю в итоге получился инструмент, который преобразовывает {{...},{..},{{{..}..}..}} в массив? Получился рекурсивный проход обвернутый в «инструмент»? )
Нет. Получился шикарный фрэймворк для маппинга постгресных типов в пхпшные и обратно. Фишка не в том, что можно массивы туда-сюда гонять, а в том, что можно сделать отображение своих композитных типов постгри, любой сложности в PHP-шные ассоциативные массивы.

А если мы можем легко мапить типы, значит сможем также легко мапить хранимые процедуры. Маппер у Димы тоже есть — сам жду документации, поскольку я его использую, как выяснилось, не так, как задумывал автор %)
Буквально хотел написать что этот «маленький» скрипт + оформление как библиотеку напомнило «библиотеку» для генерации эксепшинов у Д. Котерова… а как оказалось это вы снова…

Дмитрий, вы можете проигнорировать мой совет, но я его дам, чтобы другие не делали «библиотеки» из маленьких скриптов: Не нужно создавать массивные обертки
$parser = new DB_Pgsql_Type_Array(
new DB_Pgsql_Type_Array(
new DB_Pgsql_Type_String()
)
);
для таких задач.
Да, это круто, это удобно, бесспорно, но для парсинга строки копатся в документации к очередной библиотеке на мой вгляд уже перебор…

Может быть уже скоро вывод текста в тегах <div> тоже сделаем как библиотеку? С аттрибутами и тд? И на каждую подзадачу будем создавать свои либы?
Обратите свой взор на руби, посмотрите как там сделан вывод HTML
$parser = new DB_Pgsql_Type_Array(
new DB_Pgsql_Type_Array(
new DB_Pgsql_Type_String()
)
);


от это мне понравилось, не применительно к задаче, а вообще схема создавать правила как дерево парсеров
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А «строковое представление этих данных» это случаем не обычный JSON?
НЛО прилетело и опубликовало эту надпись здесь
Если глянуть в исходники библиотеки, то видно, что краевых условий и нюансов там действительно много. Например, NULL в array и hstore выглядит как NULL, в ROWTYPE — просто как пропуск значения между двух запятых. Кавычки квотятся по-разному: в array и hstore — слэшем, в ROWTYPE — удвоением. Соответствующие особенности и с квотингом слэшей и пустых строк, а также непустых строк (где-то их нужно заключать в кавычки, где-то нет).

Соответственно, данная библиотека полезна тем, кому нужно проверенное и покрытое тестами продакшен-решение, устойчивое к инъекциям и виду входных/выходных данных. Те, кто использует типы неактивно, вполне могут обходиться самодельными функциями.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации