Pull to refresh

Comments 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()
)
);


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

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

Articles