[php] PHP에서 “include”와 “require”의 차이점

그들 사이에 차이점이 있습니까? 그것들을 선호의 문제로 사용하고 있습니까? 다른 것을 사용하면 어떤 이점이 있습니까? 어느 것이 보안에 더 좋습니까?



답변

차이점 페이지require 에서 자세한 PHP 매뉴얼에 설명되어 있습니다 .

require ~와 동일하다 include실패시 제외하고는 치명적 E_COMPILE_ERROR수준의 오류 도 생성합니다 . 다시 말해, 스크립트는 스크립트를 정지시키는 반면 include E_WARNING는 스크립트를 계속할 수있게 하는 경고 ( ) 만 방출합니다 .

참조 efritz의 대답 @예를 들어 을


답변

require파일을로드 할 수없는 경우 PHP 치명적 오류가 발생합니다. (실행 정지)

include파일을로드 할 수없는 경우 경고를 생성합니다. (실행 계속)

다음은 include를 포함하고 차이를 요구 하는 멋진 그림입니다 .

여기에 이미지 설명을 입력하십시오

From : 차이점 요구 사항과 PHP 포함 (Robert, 2012 년 11 월)


답변

사용하다 include 당신이 당신의 스크립트 (경우에는 등 존재하지 않는) 파일을로드하지 않고 계속 괜찮다면 당신이 (당신은 안하지만) 경고 오류 메시지와 라이브가 표시 될 수 있습니다.

를 사용 require하면 지정된 파일을로드 할 수 없으면 치명적인 오류가 발생하면 스크립트가 중지됩니다.


답변

다른 사람들이 지적했듯이 유일한 차이점은 요구하면 치명적인 오류가 발생하고 잡을 수있는 경고가 포함된다는 것입니다. 어느 것을 사용 해야하는지에 대한 조언은 포함시키는 것입니다. 왜? 최종 사용자에게 경고를 표시하고 의미있는 피드백을 생성 할 수 있기 때문입니다. 치다

  // 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 : 예를 들어 작동하려면 여기 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");   


답변

<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>

코드가있는 매우 간단한 실용적인 예입니다.
첫 번째 에코가 표시됩니다. 포함 또는 필수 전에 실행되기 때문에 사용하거나 포함하든 상관 없습니다.

결과를 확인하려면 코드의 두 번째 줄에서 의도적으로 파일의 잘못된 경로를 제공하거나 파일 이름에 오류를 만드십시오. 따라서 두 번째 에코 표시하거나 사용 여부에 전적으로 의존하지 않습니다 필요 또는 포함 .

당신이 사용하는 경우 필요로 두 번째 에코는 실행되지 않습니다하지만 당신이 사용하는 경우 어떤 오류 것은 너무 두 번째 에코의 결과를 볼 것이다 오는 문제가 아니다.


답변

Include Program이 브라우저에서 종료되지 않고 경고를 표시하는 경우 파일을 찾을 수없는 경우 프로그램이 종료되고 치명적 오류가 표시됩니다.


답변