PHP에서는 include와 require의 기능이 혼동되기 쉽습니다. 아래에서는 차이점을 자세히 설명하기 위해 고전적인 예를 사용하겠습니다.
데이터베이스에 자주 액세스하는 경우 연결 명령문을
con_db.php
<?php
파일에 작성할 수 있습니다.
$dbh = mysql_connect('localhost','','');
mysql_select_db('admreqs');
?>
실제 응용 프로그램에서는 이 파일을 프로그램에서 호출할 수 있습니다.
예를 들어 require("con_db.php") 또는 include("con_db.php)
두 함수의 효과는 거의 동일합니다.
그러나 이렇게filename.php
<?php를
사용하면
require("con_db.php")
함수 myfun($par1,$par2)
{데이터베이스 처리를 위한 명령문 포함}
.....
myfun($par1,$par2);
.....
myfun($p1,$p2);
?>
파일이 myfun에 도달하면 함수에서 외부 변수를 얻을 수 없기 때문에 파일을 계속 실행할 수 없습니다(include의 경우에도 마찬가지). $dbh가 함수에 변수로 전달되지 않는 한. 이는 함수 호출의 복잡성을 증가시킵니다.
함수 내부에 require나 include를 넣어서 이 문제를 해결할 수 있습니다.
include를 사용하면 파일의 첫 번째 함수 호출은 원활하게 통과되지만 두 번째 호출은 실행되지 않습니다. 즉, 데이터베이스를 닫지 않고는 다시 열 수 없기 때문입니다. 즉, con_db.php가 두 번 실행됩니다. include를 require로 바꾸면 모든 것이 정상입니다.
즉, require는 사전 검사와 유사하게 프로그램이 실행될 때 함수 내부든 외부든 require 파일이 처음으로 한 번만 실행됩니다. 그리고 include는 실행될 때마다 파일을 호출합니다. 즉, 이번 실행 후에는 다음 번에 이 지점까지 실행될 때 다시 실행됩니다.
따라서 루프에 한 번만 실행하려는 특정 명령문이 있는 경우 해당 명령문을 require에 포함하면 됩니다.