ti-enxame.com

Diferença entre "include" e "require" no php

Existe alguma diferença entre eles? Está usando-os uma questão de preferência? O uso de um sobre o outro produz vantagens? Qual é melhor para segurança?

169
Dan Hanly

Você encontra as diferenças explicadas no manual PHP detalhado em a página de require :

require é idêntico a include exceto em caso de falha, ele também produzirá um erro de nível fatal E_COMPILE_ERROR. Em outras palavras, ele interromperá o script, enquanto o include apenas emite um aviso (E_WARNING) que permite que o script continue.

Veja a resposta de @ efritz para um exemplo

143
Steven

require irá lançar um PHP Fatal Error se o arquivo não puder ser carregado. (A execução pára)

include produz um aviso se o arquivo não puder ser carregado. (Execução continua) 

Aqui está um Nice ilustração de incluir e exigir diferença :

enter image description here

From:Diferença requer vs. incluir php (por Robert; nov 2012)

178
efritz

Use include se você não se importa em continuar seu script sem carregar o arquivo (caso ele não exista, etc.) e você pode (embora não deva) viver com uma mensagem de erro de Aviso sendo exibida.

Usando require significa que seu script será interrompido se não puder carregar o arquivo especificado e lançar um erro Fatal.

4
Martin Bean

Como outros salientaram, a única diferença é que require gera um erro fatal e inclui - um aviso acessível. Quanto a qual usar, meu conselho é para incluir. Por quê? porque você pode pegar um aviso e produzir um feedback significativo para os usuários finais. Considerar

  // Example 1.
  // users see a standard php error message or a blank screen
  // depending on your display_errors setting
  require 'not_there'; 


  // Example 2.
  // users see a meaningful error message
  try {
      include 'not_there';
  } catch(Exception $e) {
     echo "something strange happened!";
  }

NB: por exemplo 2 para trabalhar você precisa instalar um manipulador de erros-para-exceções, como descrito aqui http://www.php.net/manual/en/class.errorexception.php

  function exception_error_handler($errno, $errstr, $errfile, $errline ) {
     throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
  }
  set_error_handler("exception_error_handler");   
1
user187291
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>

Um exemplo prático muito simples com código. O primeiro eco será exibido. Não importa o que você usa include ou require porque ele é executado antes de incluir ou obrigatório.

Para verificar o resultado, na segunda linha de um código intencionalmente fornecer o caminho errado para o arquivo ou cometer erro no nome do arquivo. Assim, o segundo eco a ser exibido ou não será totalmente dependente de você usar require ou include .

Se você usar require o segundo eco não será executado, mas se você usar include não importa o erro, você verá o resultado do segundo eco também. 

0
Tara Prasad Gurung