PHP scandir
La función de PHP scandir nos devolverá un array enumerado de los archivos y directorios(carpetas) que se encuentran dentro de la ruta al directorio especificado.
Description / Descripciónscandir(string $directory, int $sorting_order = SCANDIR_SORT_ASCENDING, ?resource $context = null): array|falseSintaxis / Sintax
$folderContent= scandir($directory,(optional)$sorting__order,(optional)$context)
Parametros
$directory
– contiene la ruta del directorio que se quiere escanear
$sorting_order
– especifica el orden en que será devuelto el array, el cual puede tener 3 formas de ser devuelto:
- Ordenado ascendente(default)
- Ordenado descendente (se debe usar la constante SCANDIR_SORT_DESCENDING)
- Sin orden (se debe usar la constante SCANDIR_SORT_NONE)
$context
– El valor del parámetro context debe ser un recurso de contexto creado con la función stream_context_create()
.
Este recurso de contexto contiene opciones y parámetros que definen cómo se llevará a cabo la exploración de directorios. Estas opciones pueden incluir configuraciones de contexto relacionadas con permisos de archivos, manejo de errores, filtros de archivos, entre otros.
En general, este parámetro no se utiliza a menos que necesitemos controlar el stream(secuencia de datos que se transfiere de una fuente a un destino de manera continua)
Retornos
Retorna un array indexado
con los nombres de archivos y directorios enumerado si este tuvo éxito
Retornará false
en caso de fallo, si el directorio dado no es un directorio retornará false
y un error E_WARNING se generará.
Ejemplos de PHP scandir
El siguiente ejemplo es el que se menciona en php.net:
simple scandisk sample$dir = '/tmp'; $files1 = scandir($dir); $files2 = scandir($dir, SCANDIR_SORT_DESCENDING); print_r($files1); print_r($files2);
Array ( [0] => . [1] => .. [2] => bar.php [3] => foo.txt [4] => somedir ) Array ( [0] => somedir [1] => foo.txt [2] => bar.php [3] => .. [4] => . )
Los siguientes ejemplos no han sido chequeados, pero cumplen con lo del parámetro $context
así que los he dejado como guía.
Para ilustrar veamos un ejemplo de como hacerlo para un Contexto HTTP: Aqui estariamos haciendo scandir a un directorio que necesita una autorización que utiliza un Bearer Token
HTTP context example$httpContext = stream_context_create([ 'http' => [ 'method' => 'GET', 'header' => 'Authorization: Bearer your_token', ], ]); $files = scandir($directory, 0, $httpContext);
Contexto de archivo: Esto realmente sería nuestro default
file context$fileContext = stream_context_create([ 'file' => [ 'mode' => 'r', ], ]); $files = scandir($directory, 0, $fileContext);
Contexto SSL (para conexiones seguras):
SSL context$sslContext = stream_context_create([ 'ssl' => [ 'verify_peer' => true, 'verify_peer_name' => true, ], ]); $files = scandir($directory, 0, $sslContext);