Hoy os traemos un pequeño tutorial de programación sobre el framework de Joomla en el que vamos a aprender como se puede leer un fichero en Joomla utilizando la clase JFile. Supondremos que existe una aplicación externa, por ejemplo un script que es ejecutado diariamente por un cronjob, que nos deja un archivo con información que resulta de interés para una extensión nuestra. Vamos a explicar cuales son las sentencias que debemos utilizar para acceder a la ruta del archivo y extraer su información.
Lo primero que necesitamos para poder leer un archivo es saber donde se encuentra. Para ello tendremos que construir el path (o ruta) hasta donde se encuentra. Suponiendo que el cronjob nos deja el archivo en el directorio /components/mi_componente/archivos y que el archivo se llama miarchivo.csv la ruta a construir sería la siguiente:
{codecitation}
$rutaArchivo= JPATH_COMPONENT.ds.'archivos'.DS.'miarchivo.csv';
{/codecitation}
De donde JPATH_COMPONENT es una constante definida en el framework de Joomla que nos indica la ruta del componente que esta ejecutándose y DS representa el carácter de separación de directorios, " / " si se ejecuta Joomla sobre Linux o " \ " si lo hace sobre Windows.
Para leer la información se puede usar el método JFILE::read(). Este método permite leer un archivo completo y lo devuelve como una cadena.
{codecitation}
$contenidoFichero= JFile::read ($rutaArchivo);
{/codecitation}
Tengo malas noticias para ti si lo que querías era realizar una lectura línea a línea del archivo o utilizando algún token de separación. La clase JFile no trae estas funcionalidades. A lo sumo si conocemos el tamaño completo en bytes que ocupará una línea -ojo no contar en caracteres- se puede utilizar para extraer la información línea a línea. Aunque no es un método recomendado porque si los ficheros están en UTF-8 su representación suele ocupar más de un byte.
El siguiente código permite leer los primeros 100 bytes del fichero
{codecitation}
$contenidoFichero= JFile::read ($rutaArchivo, false, 100);
{/codecitation}
Otras operaciones que puedes realizar con esta clase son: Mover, eliminar, copiar, escribir y subir, entre otras posibles. Para más información os recomiendo ver los métodos que tiene disponible esta clase en su página de documentación.
Más info | Documentación de JFile