Olá! Sexta Feira, 21 de Novembro de 2008.


Dicas CódigoFonte.net
Segunda Feira, 05 de Novembro de 2007

Include_once ou Require_once?

Olá Pessoal,

Muitas pessoas tiram dúvidas de PHP comigo e certo dia uma delas me perguntou: "Qual a diferença entre Include_once e Require_once?"

Bom, ambos os comandos no PHP fazem a mesma coisa: Incluir um script em php na página apenas uma vez, ou seja, quando utilizamos várias vezes um mesmo script na página e se por acaso dentro deste script eu fazer o uso de outro que já foi usado na hierarquia, o include ou require once irá importar uma única vez, do contrario se usar o include ou require normal para cada chamada será importado o script.

Vou dar um exemplo utilizando o include que fica mais fácil de entender:

Temos 3 scripts, o funcao.php, index.php e contato.php

Em funcao.php temos:

<?

function MeuNome()
{
 echo "Emmanuel Alves";
}

?>


Já em index.php eu faço a importação do script funcao.php e contato.php se eu passar na minha querystring ?acao=contato, por exemplo: http://localhost/teste/index.php?acao=contato

<?

include "funcao.php";

if ($_GET["acao"] == "contato")
 include "contato.php";
else
 echo "nenhuma página foi definida";

?>


Porém, dentro do script contato.php eu também faço o uso do funcao.php (por algum motivo que só "Bial" pode explicar ehehehe)

<?

include "funcao.php";

echo "minha página de contato";

?>


Se você executar a página index.php?acao=contato, o PHP irá me retorna uma mensagem de warning, dizendo que a função "meunome()" não pode ser re-declarada:

Fatal error: Cannot redeclare meunome() (previously declared in C:apache2triadhtdocs estefuncao.php:5) in C:apache2triadhtdocs estefuncao.php on line 3

Isso aconteceu porque o index.php está usando o funcao.php que por sua vez usa o contato.php para exibir quando a querystring é "acao=contato" e esta, por último, também usa o funcao.php!!

Falei muito, mas não falei nada!!

Utilizando-se como base o exemplo anterior, se no lugar de utilizar include "funcao.php" no index.php e no contato.php, usasse include_once o script funcionaria perfeitamente, pois o PHP apenas irá incluir o script uma vez, mesmo eu colocando várias chamadas ao include_once dentro dos scripts.

Mas qual é a diferença entre include_once e require_once?

Como falei, ambos são iguais, porém, quando vemos a documentação sobre include e require, lemos que quando acontece um erro no include, por exemplo, o arquivo não existe, o PHP apenas mostra um "warning", ou seja, um aviso ao programador dizendo "Olha, o arquivo não existe, mas eu vou continuar". Já o require é mais drástico ao ponto de não permitir que a aplicação seja continuada se acontecer algum erro. Utilizando o exemplo anterior, se o arquivo não existe, o PHP avisa "O arquivo não existe e ponto final" e termina a execução do script sem mostrar o resto do arquivo.

Nessa matéria expliquei um pouco do uso do include_once e a diferença entre o require e include, espero que tenham gostado.

Até a próxima.

Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login

Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:




Melhor Visualizado com
800x600 de Resolução

CodigoFonte.net » CodigoFonte.eti.br » Procurando o que comprar? » MeuMural.com.br » Todos os Direitos Reservados © 2002/2008

Procurando Notebooks, Câmeras Digitais, iPhones?

CompreDeTudo.com