Lanzamiento de los paquetes pg_builder 2.0.0 y pg_wrapper 2.0.0 para PHP
Me complace anunciar las nuevas versiones de los paquetes pg_builder y pg_wrapper. Lo más destacado en estas versiones es el soporte para Postgres 14 y PHP 8.1
pg_builder versión 2.0.0
pg_builder es un generador de consultas para Postgres respaldado por una reimplementación parcial en PHP del propio analizador SQL de PostgreSQL. Soporta casi toda la sintaxis disponible en Postgres 14 para consultas SELECT
(y VALUES
), INSERT
, UPDATE
y DELETE
.
Con pg_builder es posible empezar con una consulta escrita manualmente, analizarla en un Árbol de Sintaxis Abstracta, añadir partes de la consulta (ya sea como objetos Node o como cadenas) al árbol o eliminarlas, y finalmente convertir nuevamente el árbol en una cadena SQL.
Lo más destacado de la versión
- Soporte para la nueva sintaxis de Postgres 14: la mayoría de las palabras clave pueden usarse como alias de columnas sin
AS
; cláusulaDISTINCT
paraGROUP BY
; cláusulasSEARCH
ySEARCH
para Common Table Expressions; alias para la cláusulaUSING
de las expresionesJOIN
. - Las funciones SQL con formato de argumento personalizado (argumentos separados por palabras clave, palabras clave como argumentos, etc.) ahora se analizan como
Node
especializados y aparecerán en el SQL generado tal y como aparecían en el código fuente:trim(trailing 'o' from 'foo')
en lugar depg_catalog.rtrim('foo', 'o')
. Esto se ajusta a los cambios realizados en el propio Postgres 14. - No se producen errores
E_DEPRECATED
cuando se ejecuta bajo PHP 8.1
El paquete puede descargarse de Github o instalarse con Composer:
$ composer require sad_spirit/pg_builder
Aunque pg_builder puede ser utilizado de forma independiente, su uso junto con pg_wrapper permite ejecutar consultas generadas con una conversión transparente de los parámetros de consulta a los tipos de Postgres.
pg_wrapper versión 2.0.0
pg_wrapper proporciona convertidores para los tipos de datos de PostgreSQL y un wrapper OO alrededor de la extensión nativa de PHP pgsql que utiliza estos convertidores. La conversión de los campos de los resultados de la consulta se realiza automáticamente mediante los metadatos de la base de datos. Los parámetros de la consulta pueden requerir la especificación del tipo.
Para aquellos tipos que cuenten con un tipo o clase nativa de PHP correspondiente, se utilizará ese tipo (text -> string, timestamp -> DateTimeImmutable, hstore -> associative array, etc.). Para los demás tipos (tipos geométricos, rangos) el paquete proporciona clases personalizadas.
Lo más destacado de la versión
- Soporte completo para tipos multirango añadido en Postgres 14, mediante
types\Multirange
y sus descendientes para representar los valores en el lado de PHP, yconverters\containers\MultiRangeConverter
para transformar los valores a y desde la representación de las cadenas de la base de datos. - Soporte para los cambios en la extensión pgsql realizados en PHP 8.1: para la conexión y los resultados de las consultas se utilizan objetos en lugar de recursos.
El paquete puede descargarse de Github o instalarse con Composer:
$ composer require sad_spirit/pg_wrapper