2012-11-13 6 views
3

를 구성 나는 언제나 require_once를 사용합니다. 많은 타사 프레임 워크는 require_once도 사용합니다.사용에 대한 실제적인 시나리오로는(), include_once 문()와 필요() <code>include</code>, <code>include_once</code>, <code>require</code> 및 <code>require_once</code> 중

누구나 다른 구성을 사용해야한다는 실제 시나리오를 설명해주십시오.

+0

성능이 떨어지면() 또는 require()가 메모리 비교가 필요하지 않으므로 더 빠릅니다. 너 무슨 소리 야? – jtheman

+1

가능한 복제본은 언제 필요합니까? \ _once vs include를 사용해야합니까?] (http://stackoverflow.com/questions/2418473/when-should-i-use-require-once-vs-include) –

답변

4

이럴 includeinclude_once 때문에 두 가지의 이유를 맞는 실제 시나리오가 없다 :

  1. 그것은 당신의 의도가 파일을 포함하고 같은 시간에 당신이 정말로 걱정하지 않는다 가능성이 매우 같지도 포함되어있는 경우 (예 : 파일이 존재하지 않고 실행이 계속되는 경우).
  2. 이 경우에도 include은 나쁜 스타일의 경고를 내 보냅니다 (제로 경고 코드는 노력해야 할 좋은 방법입니다). 당신은 is_file 같은 수표로 대부분의 시간을 막을 수 있습니다. 그렇다면 파일이 존재한다는 것을 알 수 있습니다. 왜 require입니까? requirerequire_once를 들어

: 파일이 합법적으로 (예를 들어, HTML 템플릿을) 두 번 이상 구문 분석 할 수있는 경우 전자를 사용합니다. 응용 프로그램 (대부분의 경우)에 코드가 있으면 후자를 사용하십시오.

+0

PHP 매뉴얼'is_file에 대한 익명의 유용한 의견'주의 is_file() 반환합니다 부모 디렉토리에 + x가 설정되어 있지 않으면 false. 이것은 의미가 있지만, readdir()과 같은 다른 함수는이 제한을 가지고있는 것처럼 보이지 않습니다.최종 결과는 디렉토리의 파일을 반복 할 수 있지만 is_file()은 항상 실패합니다. '출처 : http://us2.php.net/manual/en/function.is-file.php#107403 – pablofiumara

2

The require_once()은 PHP가 파일이 이미 포함되어 있는지 확인하고 제외 된 경우 다시 포함 (제외)하지 않는 것을 제외하고는 require()과 동일합니다.

require()의 기능은 오류를 다르게 처리한다는 점을 제외하면 include()과 동일합니다. 오류가 발생하면 include() 함수는 경고를 생성하지만 스크립트는 계속 실행됩니다. require()이 심각한 오류를 생성하고 스크립트가 중지됩니다.

include/requireinclude_once/require_once 문 사이의 유일한 차이점은 주어진 파일이 실제로로드 될 횟수입니다. include_once/require_once 문을 사용하면 파일을 여러 번로드하거나 실행할 수 없습니다. 이 두 가지 방법 중 하나를 사용하여 파일을 두 번로드하려고 시도하면 무시됩니다. 스크립트 내에서 동일한 함수를 여러 번 정의하는 것은 용납 될 수 없기 때문에 개발자는이 함수를 사용하여 이전에로드되었는지 여부를 확인할 필요없이 필요에 따라 스크립트를 포함 할 수 있습니다.

<?php 

    include ('library.inc');  
    $leap = is_leapyear(2003); 


    require ('library.inc');  
    $leap = is_leapyear(2003); 

?> 

두 명령문 모두 현재 스크립트가 코드를 별도의 파일로 실행하도록 허용하는 경우 두 코드의 차이점은 무엇입니까?

두 가지 주요 차이점이 있습니다

첫 번째 값을 반환 할 수있는 기능이며, 두 번째는 요청 된 파일이로드 어떤 상황 받고있다. include 문을 사용하면 PHP는 include 문 실행 시점에 도달하고 include 문을 파일 내용으로 바꿀 때까지 요청 된 파일의 실제로드를 지연시킵니다. 반대로 require 문의 경우 require 문 (따라서 파일의 내용)이 스크립트의 정상적인 진행 과정에서 실행되었는지 여부에 관계없이 require 문을 요청한 파일의 내용으로 바꿉니다.

http://82.157.70.109/mirrorbooks/php5/067232511X/ch01lev1sec8.html

참고

외부 파일에서 값을 반환 할 수있는 능력에서 단락 위에 인용 만 포함 include_once 문으로 제한됩니다. require 및 require_once 문은이 방식으로 사용할 수 없습니다.

requireFatal error하지만 include이 파일을 찾을 수없는 경우 Warning

+0

마지막으로 메모하십시오. ; 'return'의 사용에 관한 것은 올바르지 않습니다. 'require'는'include'처럼 값을'return '할 수 있습니다. – Dan

+1

@Bracketworks에서 링크를 제공 할 수 있습니까? –

+1

글쎄, http://php.net/manual/en/function.require.php는 그것을 지원하지 않는다고 언급하지 않았고, 빠른 테스트 스크립트는'include'처럼 작동한다고 결론 짓는다. – Dan

-1

include 구조는 경고를 방출 할 줄 줄; 이는 require과 다른 동작으로 치명적인 E_COMPILE_ERROR 레벨 오류가 발생합니다.

include_oncerequire_once에도 같은 차이가 적용됩니다.

사용을 포함하고 사용이 필요로 할 때,보기의 내 관점에서

Difference between require, include and require_once?에 대한 답변에 아주 좋은 설명

은 2 가지가 있습니다. 당신이 절대적으로 응용 프로그램에 존재하는 데 필요한 뭔가를이있는 경우

  1. , 당신은 require/require_once는 정의를 포함하는 데 사용한다. 그렇게하면 경고 대신에 치명적인 오류를 얻을 수 있으며 개발 중에 문제가있는 코드를 쉽게 찾을 수 있습니다.
  2. 외부 리소스 또는 누락 된 부분이있는 경우 @ 연산자를 사용하여 가능한 포함 오류를 억제 할 수 있도록 include/include_once과 함께 포함해야합니다.
+0

흠 ... 그냥 누군가가 downvoted 이유를 알고 흥미 롭 ... – bhovhannes