terça-feira, 15 de julho de 2014

<?php //Funções para sistemas de Arquivos ?> #1

Eae pessoal! Este é meu primeiro post aqui, e já vim trazer uma coisa muito útil do php pra vocês. Esses recursos vão permitir vocês a gerenciarem diretórios.
** É 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.
Para começar, você precisa ter o Apache instalado e rodando no seu computador.

*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:
NoteContext 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)

Agora veja um exemplo de criação:
<?php
$atualDir = getcwd();
$mkdir = mkdir("nova_pasta" , 0777);
?>


Explicando o código:

  1. Iniciei um php
  2. Peguei o diretório atual usando uma função que vou abordar mais abaixo
  3. Defini que deve ser criado um diretório /nova_pasta/ no diretório atual.
    (O uso de uma variável não é obrigatório)
  4. 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.

  *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