Monday, 05 de November de 2007
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.
Mateus
- 17 de January de 2009 - 13:48
Pô valeu mesmo! matou dois coelhos de uma cajadada só. Eu também não sabia a diferença entre include e require. Valeu pela matéria, abração.
emerson
- 07 de April de 2011 - 03:16
valeu muito bom
^^
Obrigado pela explicação,até hoje ninguém havia apresentado a diferença entre include_once e require_once com tanta clareza. :D
VEJA E PODE ME AUXILIAR NESTA SITUAÇÃO
ESTE É O LINK DO MEU SITE.
http://portserviceunisind.com.br/
ESTE É O LINK PARA ACESSAR A PÁGINA E ME AJUDAR A DESCOBRIR PORQUE OS DADOS NÃO SÃO INSERIDOS NO BANCO.
http://portserviceunisind.com.br/teste_cad_cli/cadastro.html
OLÁ COMPANHEIRO SOU ESTUDANTE DE PHP/MYSQL E ESTOU ENFRENTANDO ESTE MESMO PROBLEMA NO MEU CURSO.
NÃO APARECE ERRO MAIS O REGISTRO NO DB NÃO ACONTECE. E NÃO ESTOU SABENDO RESOLVER OPROBLEMA.
SEGUE O LINK ONLINE PARA QUE VC TENTE UM CADASTRO E ME INFORME PARA QUE EU CONFIRA SE OS DADOS FORAM INSERIDOS COM SUCESSO.
MEU CEL É 21 96621-2956 MEU NOME ROBSON SANTANA
VOU COMENTAR O SEU CÓDIGO EU GOSTEI MUITO.
AGUARDO QUE VC POSSA ME AJUDAR.
SGUE O LINK DA PÁGINA PARA QUE VC POSSA ACESSAR ONLINE PARA TENTARMOS CORRIGIR O PROBLEMA.
http://portserviceunisind.com.br/teste_cad_cli/cadastro.html
SEGUE O CÓDIGO PHP QUE FIZ ALGUMAS MODIFICAÇÕES PÁRA ATUALIZAR.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cadastro realizado com sucesso!</title>
</head>
<body>
<?php
$nome= $_POST ["nome"];
$email= $_POST ["email"];
$ddd= $_POST ["ddd"];
$tel= $_POST ["telefone"];
$endereco= $_POST ["endereco"];
$cidade= $_POST ["cidade"];
$estado= $_POST ["estado"];
$bairro = $_POST ["bairro"];
$pais= $_POST ["pais"];
$login= $_POST ["login"];
$senha= $_POST ["senha"];
$news= $_POST ["news"];
$sexo= $_POST ["sexo"];
@$conexao = @mysqli_connect("localhost","root");
if (!@$conexao) {
die ("Erro de conexão com localhost, o seguinte erro ocorreu -> ".mysqli_error());
}
@$banco = @mysqli_select_db("clientes",$conexao);
if (!$banco){
die ("Erro de conexão com banco de dados, o seguinte erro ocorreu -> ".mysqli_error());
}
@$query = "INSERT INTO `clientes` ( `nome` , `email` , `sexo` , `ddd` , `telefone` , `endereço` , `cidade` , `estado` , `bairro` , `país` , `login` , `senha` , `news` , `id` )
VALUES ('$nome', '$email', '$sexo', '$ddd', '$tel', '$endereco', '$cidade', '$estado', '$bairro', '$pais', '$login', '$senha', '$news', '')";
@mysqli_query(@$query,@$conexao);
echo "Seu cadastro foi realizado com sucesso!Agradecemos a atenção.";
@$query_ver_sql = mysqli_query("SELECT `login` FROM `clientes` WHERE `login` = '$login'");
@$query_ver= mysqli_num_rows($query_ver_sql);
if($query_ver>0){
echo "Este login já esta em uso";
} else {
echo "Esta login não esta em uso";
}
?>
</body>
</html>
AGUARDO A SUA REPOSTA
Para adicionar um comentário você deve efetuar o
login