사이트 내 전체검색
PHP
include
로빈아빠
https://cmd.kr/php/213 URL이 복사되었습니다.

본문

INCLUDE문은 지정한 파일을 읽고 실행한다.

include() 되거나 require() 되어 읽혀지는 파일은 포함된 파일의 처음에 PHP모드에서 빠져나와 HTML모드로 들어가고, 마지막에 PHP모드로 복귀한다. 따라서 포함될 파일의 PHP 코드는 적절한 PHP 시작, 종료 택에 둘러싸여 있어야 한다.

이 동작은 실행중 include() 문을 만날 때 만다 일어난다. 따라서 여러분은 include() 문을 루프 구조 안에 두어 매번 다른 파일을 읽어 들이도록 할 수 있다.

  1
  2 $files = array ('first.inc', 'second.inc', 'third.inc');
  3 for ($i = 0; $i < count($files); $i++) {
  4    include $files[$i];
  5 }
  6     
 

include()는 이 문장을 만날 때 마다 매번 재평가되어 재실행된다는 점에서 require()와 다르다. 반면에 require()문은 지정된 파일의 내용이 실행되는가에 관계없이(예를들어 if 문 안에 들어있고 상태가 거짓인 경우에도), 이 문장을 처음 만날을 때 지정된 파일로 대체된다.

include()는 특별한 구조이므로, 만약 이것이 조전절 안에 놓여있다면 반드시 {}(statement block)으로 둘러싸야 한다.

  1
  2 /* This is WRONG and will not work as desired. */
  3 
  4 if ($condition)
  5    include($file);
  6 else
  7    include($other);
  8 
  9 /* This is CORRECT. */
 10 
 11 if ($condition) {
 12    include($file);
 13 } else {
 14    include($other);
 15 }
 16     
 

PHP3, PHP4 모두 include() 된 파일 내에서, 이 파일의 수행을 종료하고, 이 파일을 부른 스크립트로 복귀하기 위해 return 문을 사용할 수 있다. 약간 다른점이 있기는하다. 우선, PHP3에서는 해당 블록이 함수의 블록이 아닌한 return 문이 블록안에 올 수 없다. (함수의 블록 안에 있는 경우는 해당 함수에서 return 하는 것이지 현재 파일에서 return 하는 것은 아니다.) 그러나, PHP4에서는 이 제한이 없다. ㄸ또한 PHP4에서는 include() 파일의 return시에 리턴값을 사용할 수 있다. 여러분은 include() 문을 일반 함수처럼 반환값을 받을 수 있다. (이것은 PHP3에서는 구문에러를 발생시킨다.)

Example 7-1. include() in PHP3 and PHP4

다음의 test.inc 라는 파일이 메인 파일과 동일한 디렉토리에 있다고 가정한다. :

  1
  2 <?php
  3 echo "Before the return <br>\n";
  4 if (1) {
  5    return 27;
  6 }
  7 echo "After the return <br>\n";
  8 ?>
  9     
 

main.html 이라는 메인파일의 내용은 다음과 같다. :

  1
  2 <?php
  3 $retval = include ('test.inc');
  4 echo "File returned: '$retval'<br>\n";
  5 ?>
  6     
 

main.html 이 PHP3에서 불려지면, 이 파일은 두 번째 줄에서 "you can't take the value of an include()" 라는 구문 에러를 발생시킨다. 그러나, PHP4에서는 다음돠 같은 결과를 출력한다. :

Before the return
File returned: '27'
   
 

이제 main.html 을 다음과 같은 내용으로 고쳐서 실행해 보자. :

  1
  2 <?php
  3 include ('test.inc');
  4 echo "Back in main.html<br>\n";
  5 ?>
  6     
 

PHP4에서는 다음과 같은 결과가 출력된다. :

Before the return
Back in main.html
   
 

그러나 PHP3에서는 다음과 같은 결과가 나온다. :

Before the return
27Back in main.html
 
Parse error: parse error in /home/torben/public_html/phptest/main.html on line 5
   
 

위의 구문 에러는 test.inc에서 return 문이 함수블록이외의 블록안에 사용되었기 때문에 생긴다. return 을 블록 밖으로 꺼내면 다음과 같은 경과가 출력된다. :

Before the return
27Back in main.html
   
 

위의 '27'이 출력된 것은 PHP3가 include파일로 부터의 값의 반환을 지원하지 않기 때문이다.
 

include()와 require() 모두 호출한 스크립트안으로 원하는 파일의 내용 자체를 끌어들이는(pull) 것이지, HTTP나 그와 비슷한 방식으로 해당 타겟을 call하는 것은 아니다. 따라서 현재 범위안에 선언된 모든 변수들은 포함할 파일 안에서도 그대로 사용된다.

  1
  2 include ("file.inc?varone=1&vartwo=2"); /* Won't work. */
  3
  4 $varone = 1;
  5 $vartwo = 2;
  6 include ("file.inc");  /* $varone and $vartwo will be available in file.inc */
  7     
 

여러분은 remote files 기능을 사용하여 HTTP를 통한 원격 파일을 include하거나 require할 때 위의 내용을 명확히 알아둘 필요가 있다.

See also readfile(), require(), virtual().

출처 : http://qdata.co.kr/bo/bbs/board.php?bo_table=pht&wr_id=49

댓글목록

등록된 댓글이 없습니다.

PHP
871 (15/18P)

Search

Copyright © Cmd 명령어 3.147.71.175