Colecciones de archivos
Trabajar con grupos de archivos puede ser engorroso, por lo que el marco proporciona la clase FileCollection
para facilitar
localizar y trabajar con grupos de archivos en todo el sistema de archivos.
Uso básico
En su forma más básica, FileCollection
es un índice
de archivos que configuras o construyes:
<?php
use Higgs\Files\FileCollection;
$files = new FileCollection([
FCPATH . 'index.php',
ROOTPATH . 'spark',
]);
$files->addDirectory(APPPATH . 'Filters');
Después de haber ingresado los archivos con los que le gustaría trabajar, puede eliminar archivos o usar los comandos de filtrado para eliminarlos. o conservar archivos que coincidan con una determinada expresión regular o patrón de estilo global:
<?php
$files->removeFile(APPPATH . 'Filters/DevelopToolbar');
$files->removePattern('#\.gitkeep#');
$files->retainPattern('*.php');
Cuando su colección esté completa, puede usar get()
para recuperar la lista final de rutas de archivos, o aprovechar
FileCollection
es contable e iterable para trabajar directamente con cada File
:
<?php
echo 'My files: ' . implode(PHP_EOL, $files->get());
echo 'I have ' . count($files) . ' files!';
foreach ($files as $file) {
echo 'Moving ' . $file->getBasename() . ', ' . $file->getSizeByUnit('mb');
$file->move(WRITABLE . $file->getRandomName());
}
A continuación se detallan los métodos específicos para trabajar con una FileCollection
.
Comenzar una colección
__construct(cadena[] $archivos = [])
El constructor acepta una matriz opcional de rutas de archivos para usar como colección inicial. Estos se pasan a
add()
para que todos los archivos proporcionados por las clases secundarias en $files
permanezcan.
definir()
Permite que las clases secundarias definan sus propios archivos iniciales. Este método es llamado por el constructor y permite colecciones predefinidas sin tener que utilizar sus métodos. Ejemplo:
<?php
use Higgs\Files\FileCollection;
class ConfigCollection extends FileCollection
{
protected function define(): void
{
$this->add(APPPATH . 'Config', true)->retainPattern('*.php');
}
}
Ahora puede usar ConfigCollection
en cualquier parte de su proyecto para acceder a todos los archivos de App Config sin
tener que volver a llamar los métodos de recopilación cada vez.
establecer(matriz $archivos)
Establece la lista de archivos de entrada en la matriz de cadenas de rutas de archivos proporcionada. Esto eliminará cualquier existente
archivos de la colección, por lo que $collection->set([])
es esencialmente un restablecimiento completo.
Ingresando archivos
agregar(cadena[]|cadena $rutas, bool $recursivo = verdadero) ==================================================== =
Agrega todos los archivos indicados por la ruta o conjunto de rutas. Si la ruta se resuelve en un directorio, entonces $recursivo
incluirá subdirectorios.
agregarArchivo(cadena $archivo) / agregarArchivos(matriz $archivos)
Agrega el archivo o archivos a la lista actual de archivos de entrada. Los archivos son rutas absolutas a archivos reales.
eliminarArchivo(cadena $archivo) / eliminarArchivos(matriz $archivos) ==================================================== ==
Elimina el archivo o archivos de la lista actual de archivos de entrada.
addDirectory(cadena $directorio, bool $recursivo = falso) ==================================================== ====== addDirectories(matriz $directorios, bool $recursivo = falso) ==================================================== =========
Agrega todos los archivos del directorio o directorios, opcionalmente recurriendo a subdirectorios. Los directorios son rutas absolutas a directorios reales.
Filtrar archivos
removePattern(cadena $patrón, cadena $alcance = nulo) ==================================================== == retenerPatrón(cadena $patrón, cadena $alcance = nulo) ==================================================== ==
Filtra la lista de archivos actual a través del patrón (y el alcance opcional), eliminando o reteniendo los coincidentes.
archivos. $pattern
puede ser una expresión regular completa (como '#[A-Za-z]+\.php#'
) o una pseudo-expresión regular similar
a glob()
(como *.css
).
Si se proporciona un $scope
entonces sólo se considerarán los archivos dentro o debajo de ese directorio (es decir, archivos
fuera de $scope
siempre se conservan). Cuando no se proporciona ningún alcance, todos los archivos están sujetos.
Ejemplos:
<?php
use Higgs\Files\FileCollection;
$files = new FileCollection();
$files->add(APPPATH . 'Config', true); // Adds all Config files and directories
$files->removePattern('*tion.php'); // Would remove Encryption.php, Validation.php, and boot/production.php
$files->removePattern('*tion.php', APPPATH . 'Config/boot'); // Would only remove boot/production.php
$files->retainPattern('#A.+php$#'); // Would keep only Autoload.php
$files->retainPattern('#d.+php$#', APPPATH . 'Config/boot'); // Would keep everything but boot/production.php and boot/testing.php
Recuperar archivos
obtener(): cadena[]
Devuelve una matriz de todos los archivos de entrada cargados.
Nota
FileCollection
is an IteratorAggregate
so you can work with it directly (e.g. foreach ($collection as $file)
).