Diretório PHP

Resumo : neste tutorial, você aprenderá como trabalhar com diretórios usando diversas funções integradas no PHP.

Operações básicas de diretório

PHP fornece um conjunto de funções úteis que permitem trabalhar com diretórios de maneira eficaz. Para gerenciar um diretório, você precisa obter um identificador de diretório.

Para obter o identificador de diretório de um diretório, você passa o caminho do diretório para a opendir()função da seguinte maneira:

<?php

$dh = opendir('./public');Linguagem de código:  HTML, XML  ( xml )

Se ocorrer um erro ao abrir o diretório, a opendir()função retornará false.

Quando terminar de usar o diretório, você precisará fechar o identificador do diretório usando a closedir()função:

<?php

closedir($dh);Linguagem de código:  HTML, XML  ( xml )

Cada diretório pode conter uma lista de arquivos ou subdiretórios. Também pode conter a entrada de ponto ( .)que representa o diretório atual e a entrada ( ..) que representa o diretório pai.

Para obter a próxima entrada (um arquivo ou diretório) em um diretório, você passa o identificador do diretório para a readdir()função.

Suponha que o publicdiretório seja o seguinte:

.
├── css
│   └── style.css
└── js
    └── app.jsLinguagem de código:  CSS  ( css )

O exemplo a seguir lista todos os subdiretórios no publicdiretório:

<?php

$dh = opendir('./public');

if ($dh) {
	while ($e = readdir($dh)) {
		if ($e !== '.' && $e !== '..') {
			echo $e , PHP_EOL;
		}
	}
}

closedir($dh);Linguagem de código:  HTML, XML  ( xml )

Saída:

css
js

Observe que a readdir()função retorna os diretórios e arquivos do diretório atual especificado pelo identificador de diretório. Não retorna recursivamente os arquivos e diretórios dos subdiretórios.

O código a seguir é funcionalmente equivalente ao exemplo acima, exceto pelo fato de usar a try...catch...finallyinstrução para tratar o erro:

try {
	$dh = opendir('./public');
	if (!$dh) {
		throw new Exception('Error openning the directory');
	}
	while ($e = readdir($dh)) {
		if ($e !== '.' && $e !== '..') {
			echo $e . '<br>';
		}
	}
} catch (\Throwable $e) {
	echo $e->getMessage();
} finally {
	if ($dh) {
		closedir($dir);
	}
}Linguagem de código:  PHP  ( php )

Obtenha o diretório atual

Por padrão, o diretório atual é o diretório que contém o arquivo de script atualmente em execução. O diretório atual é importante porque é usado como diretório base para caminhos de arquivos relativos.

Para obter o diretório atual, você usa a getcwd()função:

<?php

echo getcwd();Linguagem de código:  HTML, XML  ( xml )

Para alterar o diretório atual para um novo, você usa a chdir()função:

<?php

chdir('./dev');
echo getcwd();Linguagem de código:  HTML, XML  ( xml )

Após chamar a chdir()função, o diretório atual muda para ‘./dev’. E você pode verificar isso chamando a getcwd()função.

Crie um novo diretório

Para criar um diretório, você usa a mkdir()função passando o caminho do diretório. A mkdir()função retorna truese criou o diretório com sucesso ou caso falsecontrário.

<?php

$dir = './public/img';

if (mkdir($dir)) {
	echo ' The dir ', $dir, 'created successfully!';
}Linguagem de código:  HTML, XML  ( xml )

Observe que o diretório pai publicdeve existir.

Por padrão, a mkdir()função é definida 0777para o novo diretório. Se quiser definir uma permissão diferente, você pode passá-la para a mkdir()função ou usar a chmod() função. Por exemplo:

<?php

$dir = './public/assets';
mkdir($dir, 0644);Linguagem de código:  HTML, XML  ( xml )

Para obter mais informações sobre como definir permissões no arquivo ou diretório, consulte o  tutorial de permissões de arquivo  .

Excluir um diretório

Para excluir um diretório, você usa a rmdir()função. E você precisa ter permissões suficientes para remover o diretório.

Além disso, o diretório precisa estar vazio. Em outras palavras, não contém nenhum arquivo ou subdiretório.

O exemplo a seguir exclui o diretório assetsno publicdiretório:

<?php

rmdir('./public/assets');Linguagem de código:  HTML, XML  ( xml )

Verifique se um caminho é um diretório

Para verificar se um caminho é um diretório, você usa a is_dir()função:

is_dir ( string $filename ) : boolLinguagem de código:  PHP  ( php )

A is_dir()função retorna truese $filenameexistir e for um diretório. Por exemplo:

<?php

$path = './public';

if (is_dir($path)) {
	echo $path, ' is a directory.';
}Linguagem de código:  HTML, XML  ( xml )

Resumo

  • Use a opendir()função para abrir um diretório e obter o identificador do diretório e a closedir()função quando terminar de usar o diretório.
  • Use a readdir()função para ler as entradas em um diretório especificado por um identificador de diretório.
  • Use a mkdir()função para criar um novo diretório.
  • Use a rmdir()função para remover um diretório.
  • Use a is_dir()função para verificar se um caminho é um diretório e se esse diretório existe no sistema de arquivos.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *