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
- Constructor de File.
- Comprobando si el fichero existe, es legible o si se puede escribir.
- Recuperando nombre, ruta y extensión.
- El método getSize().
- Comprobaciones del tipo MIME.
- Copiando, moviendo y eliminando.
- Comprimiendo un fichero en ZIP.
- Comprobaciones del tipo MIME (métodos estáticos).
- Copiando, moviendo y eliminando (métodos estáticos).
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
- string $path: ruta del fichero en el sistema de ficheros.
Ejemplo
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
- Ninguno.
Tipo de retorno
- Boolean: true si el fichero existe, false en caso contrario.
Ejemplo
isReadable()
indica si el fichero con la ruta dada se puede leer.
isWritable()
indica si el fichero con la ruta dada puede ser escrito.
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).
getBaseName()
Retorna el nombre completo del fichero.
getName()
Nombre del fichero, sin la extensión.
getExtension()
Retorna la extensión del fichero, sin el nombre.
getFolder()
Recupera la carpeta en la que se encuentra el fichero. Ruta relativa desde el 
		punto donde se invocó la método (desde test).
getSize()
Retorna el tamaño del fichero en 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.
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');
Por ejemplo, para comprobar si es un icono: $fichero->is('image/vnd.microsoft.icon');
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');
Para comprobar tipos genéricos haremos: 
        $fichero->checkMime('/^image\//i');.
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']);
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:
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').
delete()
Elimina un fichero del sistema de ficheros.
Por ejemplo: $copia->delete().
zip()
El método zip() comprime en zip un fichero. Retorna una nueva
    	instancia de File que referencia al nuevo fichero creado.
Si es invocado sin parámetros, colocará el fichero comprimido en la carpeta tmp del proyecto, con el nombre original del fichero (pero acabado en .zip).
Ejemplo
Estos son los parámetros que acepta:
Parámetros
- ?string $name: nombre del fichero comprimido. Si no se indica será el nombre original del fichero pero acabado en .zip.
- ?string $folder: carpeta de destino. Si no se indica será la carpeta tmp del proyecto.
- ?string $password: si se indica, encripta el fichero y establece como contraseña de descompresión el texto indicado.
Valor de retorno
- File: una instancia de File referenciando al fichero comprimido.
En el ejemplo siguiente, se comprime el fichero favicon.ico en el fichero test.zip, en la carpeta storage. Además se encripta y se establece un password '1234' para descomprimirlo.
Ejemplo
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.
File::isMime()
Permite saber si un fichero tiene un determinado tipo o 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');
File::hasMime()
Comprueba si el fichero tiene uno de los tipos MIME indicados en una lista.
Copiando, moviendo y eliminando ficheros (métodos estáticos)
File::makeCopy()
El método File::makeCopy() hace una copia de un fichero:
File::doMove()
El método File::doMove() mueve un fichero desde la ruta de origen a la
    	ruta de destino.
File::remove()
El método File::remove() elimina un fichero.
