FastLight Logo

FastLight Framework 2 DOCS

Documentación de file

La clase File

Mediante objetos de tipo File representaremos los ficheros del sistema de ficheros, pudiendo recuperar información (path, nombre, extensión, tamaño...) o manipularlos (copiar, mover, borrar...).

Índice

Creando el objeto File

Usando el constructor

Para crear un objeto File, usaremos su constructor, que recibe la ruta en el sistema de ficheros donde se encuentra el fichero con el que queremos trabajar.

Parámetros

Ejemplo

// crea un objeto de tipo File que referencia al favicon $fichero = new File('../public/favicon.ico'); // muestra el objeto dump($fichero);

Existen los métodos setPath() y getPath() que permiten cambiar o consultar la ruta al fichero.

Comprobando la existencia y el acceso

exists()

indica si el fichero con la ruta dada existe en el sistema de ficheros del servidor.

Parámetros

Tipo de retorno

Ejemplo

// el fichero (del ejemplo anterior) ¿existe? echo $fichero->exists() ? 'SI' : 'NO';

isReadable()

indica si el fichero con la ruta dada se puede leer.

// el fichero (del ejemplo anterior) ¿es legible? echo $fichero->isReadable() ? 'SI' : 'NO';

isWritable()

indica si el fichero con la ruta dada puede ser escrito.

// el fichero (del ejemplo anterior) ¿se puede escribir en él? echo $fichero->isWritable() ? 'SI' : 'NO';

Métodos para recuperar información

getPath()

Recupera la ruta relativa del fichero, tomando como partida el directorio desde donde se invoca al método (carpeta test en este caso).

// muestra la ruta relativa del fichero echo $fichero->getPath();

getBaseName()

Retorna el nombre completo del fichero.

// muestra el nombre completo del fichero echo $fichero->getBaseName();

getName()

Nombre del fichero, sin la extensión.

// muestra el nombre del fichero, sin la extensión echo $fichero->getName();

getExtension()

Retorna la extensión del fichero, sin el nombre.

// muestra la extensión echo $fichero->getExtension();

getFolder()

Recupera la carpeta en la que se encuentra el fichero. Ruta relativa desde el punto donde se invocó la método (desde test).

// muestra la carpeta echo $fichero->getFolder();

getSize()

Retorna el tamaño del fichero en bytes.

// muestra el tamaño en bytes del fichero echo $fichero->getSize()." bytes";

Comprobación de tipos MIME.

getMime()

Recupera el tipo MIME real del fichero, no mira la extensión sino que usa la extensión de PHP fileinfo para obtener la información.

// muestra el tipo MIME real del fichero echo $fichero->getMime();

is()

Comprueba si el fichero es de un tipo MIME concreto.

Por ejemplo, para comprobar si un fichero es PDF, podemos hacer: $fichero->is('application/pdf');

// Muestra si el fichero tiene tipo application/pdf o no echo $fichero->is('application/pdf') ? 'SI':'NO';

Por ejemplo, para comprobar si es un icono: $fichero->is('image/vnd.microsoft.icon');

// Muestra si el fichero es un icono echo $fichero->is('image/vnd.microsoft.icon') ? 'SI':'NO';

checkMime()

Comprueba el tipo MIME haciendo uso de una expresión una expresión regular.

Por ejemplo para comprobar tipos concretos podemos hacer: $fichero->checkMime('/\/(pdf|jpe?g)$/i');

// comprueba si es pdf, jpg o jpeg echo $fichero->checkMime('/\/(pdf|jpe?g)$/i') ? 'SI':'NO';

Para comprobar tipos genéricos haremos: $fichero->checkMime('/^image\//i');.

// comprueba si el fichero es una imagen echo $fichero->checkMime('/^image\//i') ? 'SI':'NO';

has()

Comprueba si el fichero es de alguno de los tipos MIME que le indiquemos mediante una lista.

Podremos hacer cosas como:

$fichero->has(['application/pdf','image/jpeg']);

// comprueba si el fichero es pdf o jpg echo $fichero->has(['application/pdf','image/jpeg']) ? 'SI':'NO'; // comprueba si el fichero es icono o jpg echo $fichero->has(['image/vnd.microsoft.icon','image/jpeg']) ? 'SI':'NO';

Copiando, moviendo y eliminando ficheros

copy()

El método de objeto copy() copia ficheros.

Por ejemplo, si queremos realizar una copia del fichero 'logs/readme.txt' en el fichero 'logs/copia.txt', podemos hacer:

// crea el objeto File $fichero = new File('../logs/readme.txt'); // realiza la copia hacia la ruta de destino $copia = $fichero->copy('../logs/copia.txt'); // muestra el tamaño del nuevo fichero echo "OK, copiados ".$copia->getSize()." bytes a ".$copia->getBaseName(); // podemos comprobar si existe echo $copia->exists() ? 'SI' : 'NO'; // comprobar si es legible echo $copia->isReadable() ? 'SI' : 'NO'; // comprobar si se puede escribir en él echo $copia->isWritable() ? 'SI' : 'NO';

move()

Este método permite mover o renombrar un fichero. Por ejemplo, vamos a mover el fichero del ejemplo anterior a '../logs/moved.txt' haciendo;

$copia->move('../logs/moved.txt').

// intenta mover $copia->move('../logs/moved.txt'); echo "Movidos ".$copia->getSize()." bytes a $copia."; // comprueba si es legible echo $copia->isReadable() ? 'SI' : 'NO';

delete()

Elimina un fichero del sistema de ficheros.

Por ejemplo: $copia->delete().

// intentando eliminar un fichero $copia->delete(); echo "Se ha borrado el fichero del sistema de ficheros."; // comprueba si existe echo $copia->exists() ? 'SI' : 'NO';

Comprobando tipos MIME (métodos estáticos)

Los métodos estáticos de File para tipos, nos permiten recuperar información del tipo MIME sin necesidad de tener que crear el objeto.

File::mime()

Recupera el tipo real de un fichero del que le pasamos la ruta.

// muestra el tipo MIME del fichero sitemap.xml echo File::mime('../public/sitemap.xml'); // muestra el tipo MIME del logo de la página echo File::mime('../public/images/template/logo.png');

File::isMime()

Permite saber si un fichero tiene un determinado tipo o no.

// Probando si el fichero'../public/humans.txt' es un fichero TXT echo File::isMime('../public/humans.txt', 'text/plain') ? 'SI' : 'NO'; // Probando si el fichero'../public/humans.txt' es un fichero PNG echo File::isMime('../public/humans.txt', 'image/png') ? 'SI' : 'NO';

File::mimeCheck()

Valida el tipo MIME mediante una expresión regular.

Probando si el tipo MIME del fichero '../public/favicon.ico' cumple con la expresión regular '/^image\/*/i':

File::isMime('../public/favicon.ico', '/^image\/*/i');

// Probando si el tipo MIME del fichero '../public/favicon.ico' cumple con la expresión regular '/^image\/*/i' echo File::mimeCheck('../public/favicon.ico', '/^image\/*/i') ? 'SI' : 'NO'; // Probando si el tipo MIME del fichero '../public/favicon.ico' cumple con la expresión regular '/^video\/*/i' echo File::mimeCheck('../public/favicon.ico', '/^video\/*/i') ? 'SI' : 'NO';

File::hasMime()

Comprueba si el fichero tiene uno de los tipos MIME indicados en una lista.

// El fichero '../public/robots.txt' es text/plain o text/csv ? echo File::hasMime('../public/robots.txt', ['text/plain', 'text/csv']) ? 'SI':'NO'; // El fichero '../public/robots.txt' es imagen/jpeg o text/csv ? echo File::hasMime('../public/robots.txt', ['image/jpeg', 'text/csv']) ? 'SI' : 'NO';

Copiando, moviendo y eliminando ficheros (métodos estáticos)

File::makeCopy()

El método File::makeCopy() hace una copia de un fichero:

// realiza una copia del fichero de CSS File::makeCopy('../public/css/base.css', '../tmp/test.css'); // comprobando si ha funcionado correctamente echo (new File('../tmp/test.css'))->exists() ? 'SI' : 'NO';

File::doMove()

El método File::doMove() mueve un fichero desde la ruta de origen a la ruta de destino.

// mueve un fichero File::doMove('../tmp/test.css', '../tmp/test2.css'); // comprobando si ha funcionado correctamente echo (new File('../tmp/test.css'))->exists() ? 'SI' : 'NO'; // NO echo (new File('../tmp/test2.css'))->exists() ? 'SI' : 'NO'; // SI

File::remove()

El método File::remove() elimina un fichero.

// elimina el fichero File::remove('../tmp/test2.css') ? 'SI' : 'NO'; // comprobando si ha funcionado correctamente echo (new File('../tmp/test2.css'))->exists() ? 'SI' : 'NO'; // NO

Fin de la documentación file

Lista de ejemplos.

FastLight Framework 2 DOCS, versión 2.0.10