2012-04-22 5 views
3

나는 그것을 필요로하거나 그것을 요구하는 것 이상의 이유가 있는지 알고 싶었다. 나는이 문장 우연히 :가 위치한 줄이 실행되지 않을 경우require() 및 include() 문은 조건문에서 다르게 작동합니까?

include() 달리, require()는 항상 심지어 , 대상 파일에서 읽습니다. 조건부로 파일을 포함하려면 include()을 사용하십시오. 조건문은 require()에 영향을주지 않습니다. 그러나 require()이 발생한 줄이 이 아닌 경우 대상 파일의 코드도 모두 이 실행됩니다.

내가 해석하는 방식은 실행을 끝내지 않는 내부 조건을 포함하며 실제로는 서버에 비용이 덜 드는 것으로 보입니다. 이것이 사실이라면 나는 단지 호기심이 많다. 나는 매뉴얼에서 그것을 보지 못했고, 그래서 저는 회의적입니다.

답변

4

거짓 진술을 포함 시키면 파싱되지 않습니다. 요구 사항도 마찬가지입니다. 주된 차이점은 require가 결코 실행되지 않더라도 파일이 존재하는지 검사 할 것이라는 점입니다. 글쎄, 적어도 내 경험 이었어.

두 가지 모두 한 번만 실행되지만 파일이 존재하지 않으면 require는 실행 여부에 관계없이 오류를 표시합니다.

+0

아, 알겠습니다. 고마워요. – Andy

+0

@ 앤디 아마 upvote하고 대답을 받아 들여야합니다. – ricochet1k

1

는이 구현있어 정확히 어떻게, 그러나 이것은 당신에게 둘 사이의 차이가 무엇인지에 대한 아이디어 제공해야합니다 :

function require($file) { 
    if (!is_readable($file)) { 
     die("can't read $file"); 
    } 
    include($file); 
} 

당신이 그것을 포함 PHP에게 파일마다 읽 포함합니다. _once 변형은 포함 된 내용을 추적하고 include를 한 번만 수행합니다.

관련 문제