Uso de wrappers de escritura

PHP hace uso de wrappers para leer o escribir datos en los flujos de entrada o salida. Esto nos permite seleccionar un wrapper basado en algunas condiciones y dejar el resto del código sin modificar.

Sin embargo, escribir en el flujo de salida cuando queremos enviar información al navegador puede no tener el resultado esperado.

Separador

Escanear directorios recursivamente

En el artículo anterior hablé de los iteradores que aporta PHP para acceder al sistema de archivos y puse una función para eliminar directorios de manera recursiva.

Ahora pondré una función que devuelve todos los archivos y directorios de un directorio de manera recursiva. También se puede filtrar el resultado para devolver solamente los directorios o los archivos.

Separador

Sistema simple de plantillas en PHP

Con una sola clase tendremos la posibilidad de manejar templates de una forma sencilla. Las plantillas son renderizadas sin hacer uso de mucha lógica lo que simplifica su uso.

En caso de necesitar estructuras de datos complejas así como lógica compleja para generar el resultado se puede optar por sistemas de plantillas más completos como Twig o Smarty.

Separador

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.