include


include 전처리기 명령어는 아주 익숙한 키워드입니다. 다양한 언어에서도 동일한 키워드를 사용하는 경우가 많습니다.

|문법|

include "파일명";

PHP가 스크립트 실행 도중에 include 명령을 만나면 해당 명령이 선언한 자리에 지정한 파일을 삽입, 결합합니다.


파일 실패


전처리기 명령어 include는 삽입, 결합할 php 스크립트를 동일한 서버에서 찾습니다. 소스파일을 찾으면 삽입을 통하여 소스를 결합하고, 만일 소스 파일을 찾지 못하면 경고(E_WARNING)를 출력합니다. 환경설정에서 이 경고는 무시하고 출력하지 않도록 설정할 수도 있습니다.

include명령어는 PHP를 실행하는 데 있어서 파일 존재 여부와 상관없습니다. 만일 include 명령에서 지정한 소스파일을 찾지 못해도 PHP는 정상적으로 실행됩니다. 단지 오류 메시지만 출력합니다.

따라서 정확한 include 명령을 하고 싶다면 파일의 경로나 존재 여부를 개발자가 꼭 확인하고 명령을 작성하는 것이 좋습니다.

예)

if(file_exists($filename)){
	include $filename;
}

위 예 표현에서 사용한 file_exists() 함수는 파일의 존재 유무를 확인합니다. 이는 PHP의 파일 처리 내부 함수입니다.


중복 처리


전처리기 include명령어는 삽입하고자 하는 소스 파일의 중복 여부를 체크하지 않습니다. 만일 소스상에서 동일한 include를 중복하여 작성했을 때가 있습니다. 이런 경우 PHP는 파일을 두 번 읽어서 결합을 하게 됩니다.

include 'sub_function.php';

$i = $+1;

include 'sub_function.php';

만일 삽입하는 파일 안에 함수와 같은 선언이 있다면 PHP는 바로 오류를 출력할 것입니다.

하지만 인위적으로 단순한 처리 로직을 두 번 처리해야 하는 경우라면 이때도 매우 유용할 수 있습니다.

예제 파일 include_lib.php

<?php
	function addPlus($x,$y){
		return $x+$y;
	}
?>

예제 파일 include-02.php

<?php
	include "include_lib.php";
	$x = 10;
	$y = 5;
	
	echo addPlus($x,$y);
?>

결과

15

위의 예제는 include 명령어를 통해 실행 파일을 2개로 분리했습니다. include-02.php 파일은 include_lib.php 파일을 삽입하여 실행 함수를 호출합니다. include-02.php에서 사용한 addPlus() 함수는 include_lib.php 파일에 정의되어 있습니다.


include_once


기존 include명령어는 중복 사용할 경우 여러 문제를 발생할 수 있습니다. 이런 이중 사용으로 인해 발생할 수 있는 문제들을 방지하기 위해서 꼭 한 번만 include해야 되는 스크립트가 있다면 include 대신에 include_once 사용을 권장합니다.

|문법|

include_once  'filename';

include_once명령어는 의미 그대로 소스상에서 지정한 파일을 한 번만 삽입을 하라는 의미입니다.

예제 파일 include-03.php

<?php
	include_once "include_lib.php";
	// 두 번 삽입을 해도 오류가 나지 않습니다.
	include_once "include_lib.php";

	$x = 10;
	$y = 5;
	
	echo addPlus($x,$y);
?>

결과

15

위의 예는 include_one을 이용한 실험입니다. include_once 명령어는 두 번 삽입하는 실수를 방지할 수 있습니다. 중복하여 사용하는 경우 두 번째 include_once는 무시하게 됩니다.