** É uma série, em que PRETENDO falar sobre todos os recursos de Funções para sistema de arquivo Os recursos abordados no tutorial de hoje serão:
- Criação de diretórios no servidor
- Função que pega o diretório atual
- Remoção de diretórios no servidor
- Código que lista arquivos e pastas em um diretório do servidor.
*mkdir() - Cria diretório especificado
Já sabemos que o php roda direto no servidor. Sendo assim, ele ganha direito de "vasculhar" o servidor.
Uma função interna muito interessante é a mkdir() (significa "make Directory" - Criar Diretório).
Sua sintaxe é a seguinte:
<?php bool mkdir ( string $pathname [, int $mode [, bool $recursive [, resource $context ]]] ) ?>
Calma. Não se deixe levar à loucura com essa sintaxe esquisita!
O padrão é o seguinte:
mkdir($path , 0777 , false , $context);
explicando:
1. mkdir(); indica a função Make Directory - Criar Diretório.
2. O primeiro parâmetro $path, é uma string que contenha o caminho do diretório a ser criado. Exemplo:
mkdir("code/nova_pasta");
3. O Segundo parâmetro 0777, é o MODE, isto é: Permissão de acesso, sendo 0777 o maior e padrão.
mkdir("code/nova_pasta" , 0777 );
MODE é ignorado pelo Windows.
4. O Terceiro parâmetro false é o RECURSIVE, que "Permite a criação de diretórios aninhados especificados no caminho".
mkdir("code/nova_pasta" , 0777 , false);
5. O quarto parâmetro, é o contexto:
Note: Context support was added with PHP 5.0.0. For a description of contexts, refer to Streams.
(Nota: O suporte ao contexto foi adicionado com o PHP 5.0.0. Para uma descrição de contextos, veja Streams. - www.php.net)O padrão é o seguinte:
mkdir($path , 0777 , false , $context);
explicando:
1. mkdir(); indica a função Make Directory - Criar Diretório.
2. O primeiro parâmetro $path, é uma string que contenha o caminho do diretório a ser criado. Exemplo:
mkdir("code/nova_pasta");
3. O Segundo parâmetro 0777, é o MODE, isto é: Permissão de acesso, sendo 0777 o maior e padrão.
mkdir("code/nova_pasta" , 0777 );
MODE é ignorado pelo Windows.
4. O Terceiro parâmetro false é o RECURSIVE, que "Permite a criação de diretórios aninhados especificados no caminho".
mkdir("code/nova_pasta" , 0777 , false);
5. O quarto parâmetro, é o contexto:
Note: Context support was added with PHP 5.0.0. For a description of contexts, refer to Streams.
Agora veja um exemplo de criação:
<?php $atualDir = getcwd(); $mkdir = mkdir("nova_pasta" , 0777); ?>
Explicando o código:
- Iniciei um php
- Peguei o diretório atual usando uma função que vou abordar mais abaixo
- Defini que deve ser criado um diretório /nova_pasta/ no diretório atual.
(O uso de uma variável não é obrigatório) - Fechei o php
Neste exemplo, a variável $mkdir agora tem um valor true. A função mkdir() retorna TRUE quando há sucesso, e FALSE quando há falha. Assim, é possível informar ao usuário se houve sucesso ou falha assim:
<?php $mkdir = mkdir($_POST['pathname']); if($mkdir === true){ echo "<script> alert('Sucesso ao criar diretório ".$_POST['pathname']."!!!'); </script>"; } else { echo "<script> alert('Erro ao criar diretório ".$_POST['pathname']."!!!'); </script>"; } echo "<script> window.location.href='index.php';"; ?>
É criado um diretório que o usuário definiu via formulário. Se houver sucesso, o php imprime um javascript que exibe um alerta informando sucesso. Caso contrário, o php imprime um javascript que exibe um alerta informando erro. Após isso, é impresso outro javascript que retorna à index.
++ Em sucesso retorna true. Em falha retorna false.
++ Em sucesso retorna true. Em falha retorna false.
*getcwd() - Encontra o diretório atual
Vou ser breve nesta função.
Código de exemplo:
<?php
$diretorioAtual = getcwd(); //Armazena o diretório que está na barra de endereços à variável $diretorioAtual echo $diretorioAtual; // Imprime o valor de $diretorioAtual ////////////////// OU ///////////////////////////// echo getcwd(); ?>
Acho que nem precisa de mais explicação. A função getcwd() pega o endereço que está na barra de endereços. Ela retorna o diretório atual, OU false em caso de erro.
Em alguns variantes Unix, getcwd() irá retornar FALSE se um dos diretórios pai não for legível ou no modo busca, até mesmo se o diretório atual for.
++ Em sucesso retorna uma string com o diretório atual. Em falha retorna false.
* rmdir() - Remove diretório especificado
É uma função "prima" de mkdir(). Tem a função contrária de mkdir(). Enquanto mkdir() cria diretórios, esta remove.Sintaxe padrão:
rmdir($caminhoDoDiretorio);
O outro parâmetro desta função são os Contexts, em que se especifica contextos.
*É necessária permissão para deletar o diretório.
++ Em sucesso retorna true. Em falha retorna false.
*Extra: Código que lista arquivos/pastas
Encontrei esse código na internet. Ele lista primeiro as pastas, e depois os arquivos.Código:
<?php // pega o endereço do diretório $diretorio = getcwd(); // abre o diretório $ponteiro = opendir($diretorio); // monta os vetores com os itens encontrados na pasta while ($nome_itens = readdir($ponteiro)) { $itens[] = $nome_itens; } // ordena o vetor de itens sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){ // checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; }}} // lista as pastas se houverem if ($pastas != "" ) { foreach($pastas as $listar){ print "Pasta: <a href='$listar'>$listar</a><br>";} } // lista os arquivos se houverem if ($arquivos != "") { foreach($arquivos as $listar){ print " Arquivo: <a href='$listar'>$listar</a><br>";} } ?>
Está dado um exemplo de utilização do getcwd().
Na linha 29, você pode alterar o que será exibido nas pastas.
Na linha 35, você pode alterar o que será exibido nos arquivos.
Duvida do que eu escrevi e expliquei (ou pelo menos tentei)? Está no site www.php.net:
mkdir()
getcwd()
rmdir()
Nenhum comentário :
Postar um comentário