Trabajar con archivos

Higgs proporciona una clase File que envuelve el SplFileInfo<https://www.php.net/manual/en/class.splfileinfo.php> _ clase y proporciona algunos métodos de conveniencia adicionales. Esta clase es la clase base para archivos cargados y imágenes .

Obtener una instancia de archivo

Crea una nueva instancia de Archivo pasando la ruta al archivo en el constructor. De forma predeterminada, no es necesario que el archivo exista. Sin embargo, puede pasar un argumento adicional de «verdadero» para verificar que el archivo existe y lanzar FileNotFoundException() si no es así.

<?php

$file = new \Higgs\Files\File($path);

Aprovechando el SPL

Una vez que tenga una instancia, tendrá listo todo el poder de la clase SplFileInfo, que incluye:

<?php

// Get the file's basename
echo $file->getBasename();
// Get last modified time
echo $file->getMTime();
// Get the true real path
echo $file->getRealPath();
// Get the file permissions
echo $file->getPerms();

// Write CSV rows to it.
if ($file->isWritable()) {
    $csv = $file->openFile('w');

    foreach ($rows as $row) {
        $csv->fputcsv($row);
    }
}

Nuevas características

Además de todos los métodos de la clase SplFileInfo, obtienes algunas herramientas nuevas.

obtenerNombreAleatorio()

Puede generar un nombre de archivo aleatorio criptográficamente seguro, con la marca de tiempo actual antepuesta, con getRandomName() método. Esto es especialmente útil para cambiar el nombre de los archivos al moverlos de modo que el nombre del archivo sea imposible de adivinar:

<?php

// Generates something like: 1465965676_385e33f741.jpg
$newName = $file->getRandomName();

obtenerTamaño()

Devuelve el tamaño del archivo cargado en bytes:

<?php

$size = $file->getSize(); // 256901

obtenerTamañoPorUnidad()

Devuelve el tamaño predeterminado del archivo cargado en bytes. Puede pasar “kb” o “mb” como primer parámetro para obtener los resultados en kilobytes o megabytes, respectivamente:

<?php

$bytes     = $file->getSizeByUnit(); // 256901
$kilobytes = $file->getSizeByUnit('kb'); // 250.880
$megabytes = $file->getSizeByUnit('mb'); // 0.245

obtenerTipoMime()

Recupere el tipo de medio (tipo mime) del archivo. Utiliza métodos que se consideran lo más seguros posible al determinar el tipo de archivo:

<?php

$type = $file->getMimeType();

echo $type; // image/png

adivinarExtensión()

Intenta determinar la extensión del archivo basándose en el método confiable getMimeType(). Si se desconoce el tipo de mimo, devolverá nulo. Esta suele ser una fuente más confiable que simplemente usar la extensión proporcionada por el nombre del archivo. Usos los valores en app/Config/Mimes.php para determinar la extensión:

<?php

// Returns 'jpg' (WITHOUT the period)
$ext = $file->guessExtension();

Mover archivos

Cada archivo se puede mover a su nueva ubicación con el método move(), apropiadamente llamado. Esto toma el directorio para moverse. el archivo como primer parámetro:

<?php

$file->move(WRITEPATH . 'uploads');

De forma predeterminada, se utilizó el nombre de archivo original. Puede especificar un nuevo nombre de archivo pasándolo como segundo parámetro:

<?php

$newName = $file->getRandomName();
$file->move(WRITEPATH . 'uploads', $newName);

El método move() devuelve una nueva instancia de archivo para el archivo reubicado, por lo que debe capturar el resultado si el Se necesita la ubicación resultante:

<?php

$file = $file->move(WRITEPATH . 'uploads');