En esta ocasión les vengo a compartir una función en PHP que desarrollé para un proyecto propio, en el cual surgió la necesidad de crear una estructura de directorios a partir de un arreglo que representa la estructura deseada.
Verán supongamos que tenemos el siguiente arreglo:
1 2 3 |
$dir = array('libs', 'inc', 'img' => array('full', 'thumbs')); |
Como podrán ver se supone que este arreglo representa la siguiente estructura de directorios:
- libs
- inc
- img
- full
- thumbs
Bien, la razón de ser de esta función, es crear algo que se pueda reutilizar para crear aplicaciones web con PHP de manera flexible y sencilla, en la cual podamos indicar los directorios que vamos a utilizar y nos ayude a crear la estructura de directorios.
Esta función es recursiva, por lo que cabe destacar que no importa cuantos sub-niveles tenga el arreglo que utilicemos, va a funcionar. Para que la función realice su trabajo necesita dos datos:
- El directorio base a partir del cual se creara la estructura de directorios (por lo general sera el directorio donde esta nuestro proyecto)
- El arreglo que contiene la estructura deseada
Sin más rodeos paso a mostrarles el código de la función:
1 2 3 4 5 6 7 8 9 10 |
function arrayToDirs($root, $structDir) { foreach($structDir as $key => $item) { if(is_array($item)) { arrayToDirs($root . DIRECTORY_SEPARATOR . $key, $item); }else{ if(!file_exists($root . DIRECTORY_SEPARATOR . $item)) mkdir($root . DIRECTORY_SEPARATOR . $item, 0777, true); } } } |
NOTA: Esta función no la he probado en Linux, pero no veo ningún inconveniente para que no funcione, en cualquier caso no creo que necesite un cambio significativo para funcionar en Linux, en caso de que no funcione.