Facilitando el procesado de textos en PHP

Considerando que PHP surgió para procesar textos parece mentira que después de tantos años y versiones el manejo de cadenas sea tan deficiente e incongruente. Para tratar de unificar el manejo de cadenas en PHP y, además, de una manera orientada a objetos he creado la clase jfString.

Actualmente los nombres de las funciones de cadenas en PHP presentan ciertas incongruencias:

Separador

Compartir datos entre procesos

Por medio de esta clase podemos usar la memoria compartida como si fuera un array normal. Cada vez que se trata de leer y escribir en el array se estará accediendo a la memoria compartida para almacenar de manera persistente la información y poder compartir entre procesos los datos.

Esta clase toma en cuenta la concurrencia por lo que hace uso de semáforos antes de leer y escribir los datos en memoria.

Separador

Borrar directorio recursivamente

PHP aporta algunos iteradores interesantes para acceder al sistema de archivos. Anteriormente era algo tedioso tener que buscar archivos, eliminar directorios, etc., pero con estos iteradores se ha vuelto un poco más fácil la manipulación.

Aprovechando estos iteradores, a continuación pongo una función que permite eliminar de manera recursiva un directorio y que uso normalmente en mis clases por medio de un trait.

Separador

Leer el contenido recibido por POST

Si alguien nos pide que recuperemos el contenido que se ha enviado usando el método POST lo primero que se nos viene a la mente es usar $_POST y acceder al contenido usando el nombre del parámetro.

El problema se presenta cuando los datos no se pasan como parámetro, como ocurre con muchas interfaces REST, sino que los recibimos en el cuerpo de la petición.

Separador

Concatenar array asociativo

A veces hecho de menos en PHP una función para concatenar arrays asociativos, algo parecido a la función http_build_query pero que permita especificar el texto a usar para concatenar cada par clave-valor en vez del = y también poder especificar el texto para concatenar el resultado en lugar de &.

Normalmente las soluciones que he visto para afrontar esta necesidad son iterativas así que tratando de hacer algo parecido con funciones nativas encontré una solución con las funciones vprintf, vsprintf y vfprintf.