Criando, listando e deletando pastas/diretórios com PHP

Criando, listando e deletando pastas/diretórios com PHP

Com diferentes funções podemos gerenciar toda a estrutura de diretórios facilmente.

Publicado em

Nem sempre o trabalho do programador web é gerenciar transações com banco de dados, isso é apenas uma parte de grande aplicações, enquanto as demais, consiste em diferentes tarefas, como manipular diretórios, que é o que vamos estudar hoje.

Criando diretórios

Utilizamos a função mkdir() para criar nossos diretórios, mas para isso, é necessário que o caminho informado tenha permissão de escrita, caso contrário, mesmo a gente atribuindo as permissões em seu segundo parâmetro, a função irá falhar.

A função recebe alguns parâmetros, que são eles:

  1. Caminho do diretório, ex: /produtos/;
  2. As permissões que será atribuído ao diretório;
  3. Se as pastas devem ser criadas em modo recursivo, ex: /produtos/mouse, então, se o valor for true, a função vai criar todas as sub-pastas.
mkdir('/produtos/', 0755, true);

Deletando diretórios

Para remover um diretório, usamos a função rmdir(), mas o diretório precisa estar vázio para executar tal ação, mas caso ele não esteja, será necessário criar uma função recursiva que navegue em todos os sub-diretórios e vá fazendo a deleção em cascata.

A função recebe no seu primeiro parâmetro o caminho que você precisa deletar, como /produtos/.

rmdir('/produtos/');

Verificando se o diretório existe

Tanto para criar, deletar e outras ações, é importante garantir que o diretório exista, afinal, todo pequeno processo precisa passar minuciosamente por várias validações, e essa, é mais uma delas.

Usamos a função is_dir(), ela nos devolve true se o caminho informado é um diretório, e com isso, podemos saber se o diretório existe ou não.

A função recebe no seu primeiro parâmetro o caminho que deseja verificar se é um diretório.

is_dir('/produtos/');

Combinamos a função com o uso do if, assim, criamos uma condicional.

$dir = 'produto/mouse/usado2';

//Verificamos se o diretório não existe

if (!is_dir($dir)) {
    //Criamos um diretório
    mkdir($dir, 0755, true);
}

Listando o conteúdo do diretório

Para listar o conteúdo de um diretório, podemos usar a função scandir(), ela recebe no seu primeiro parâmetro, o caminho que desejamos listar.

É sempre importante garantir que o caminho exista ou esteja acessível, caso contrário, uma mensagem de alerta será exibido na tela.

Note que no código abaixo, utilizamos a função array_diff(), com ela, podemos passar o resultado da função scandir e um segundo array, com os valores que desejamos remover.

//Listamos o diretório e removemos os pontos da lista
$listDiretorio = array_diff(
    scandir('/produtos/'),
    ['.', '..']
);

//Percorremos todos os itens da nossa lista
foreach($listDiretorio as $diretorio){
    $isDir = is_dir(''/produtos/' . $diretorio) ? 'Diretório' : 'Arquivo';

    echo "<p>{$diretorio} - {$isDir}</p>";
}


Conclusão

Pois bem, agora que você já viu mais detalhadamente as instruções, te convido a assistir a nossa videoaula criada em cima do conteúdo abordado até aqui.

Para finalizar, abaixo está todo o código fonte utilizado durante as aulas.

<?php

//is_dir  = Verifica se é um diretório
//mkdir   = Cria um diretório
//scandir = Lista o diretório
//rmdir   = Remove o diretório

$dir = 'produto/mouse/usado2';

//Verificamos se o diretório não existe

if (!is_dir($dir)) {
    //Criamos um diretório
    mkdir($dir, 0755, true);
}

//Remove a pasta
rmdir('produto/mouse/usado/');

//Listamos o diretório e removemos os pontos da lista
$listDiretorio = array_diff(
    scandir($dir),
    ['.', '..']
);

//Percorremos todos os itens da nossa lista
foreach($listDiretorio as $diretorio){
    $isDir = is_dir($dir . '/' . $diretorio) ? 'Diretório' : 'Arquivo';

    echo "<p>{$diretorio} - {$isDir}</p>";
}

Qualquer dúvida ou sugestão, deixe nos comentários.

Até logo.

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Todos os nossos cursos em promoção
Todos os nossos cursos em promoção

Webstories

Todos os nossos cursos em promoção

Todos os nossos cursos em promoção

Deixe um comentário
Aguarde...
Todos os nossos cursos em promoção