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:
- Caminho do diretório, ex: /produtos/;
- As permissões que será atribuído ao diretório;
- 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.