반응형
PHP에서는 파일을 포함시키는 require
와 include
두 가지 키워드가 존재한다. 이 두 가지를 번갈아 가면서 써도 큰 차이를 느낄 수 없다. 언제 require
를 사용해야하고, 언제 include
를 사용해야 할까?
먼저 예제 코드를 작성해 봤다.
xxxxxxxxxx
# index.php
<?php
#require or include?
include "Worker.php";
echo "before Worker::work<br>";
Worker::work();
echo "After Worker::work<br>";
xxxxxxxxxx
# Worker.php
<?php
class Worker
{
public static function work()
{
echo "Worker::work() Called!<br>";
}
}
index.php에서 work파일을 포함시키고 있다.
여기서 require
나 include
모두 동일하게 동작한다.
이 둘은 오류 처리에 대해 차이점이 있다.
include와 require문은 동일하지만 실패 시 다른 동작을 하게 됩니다.
- require는 치명적인 오류(컴파일 에러)를 생성하고 스크립트를 중지합니다.
- include는 경고를 생성하고 스크립트는 계속됩니다.
즉 파일을 정상적으로 가져오지 못했을 경우, require
는 에러가 발생하고 멈추지만 include
는 계속 실행하게 된다.
require
와 include
로 존재하지 않는 Worker2.php
파일을 포함시켜 봤다.
xxxxxxxxxx
<?php
# require 사용
require "Worker2.php"; #Worker2.php는 존재하지 않는 파일
echo "before Worker::work()<br>";
Worker::work();
echo "After Worker::work()<br>";
require
의 경우 500 에러와 함께 페이지를 출력할 수 없다.
include
를 사용했을 경우 첫 index.php의 7 라인에 있는 echo "before Worker::work<br>";
만 출력하는 것을 볼 수 있다. Worker::work()
를 찾을 수 없기 때문에 그 이전 내용까지만 실행이 되는 것이다.
반응형