웹 사이트 제작시 주로 사용하던 프레임워크에서 벗어나거나 경량 프레임워크를 사용할 때 반드시 사용할 수 밖에 없는 구문이 여러 파일로 나누어진 코드를 불러오는 기능일 것이다. PHP 에서는 include 와 require 가 그 기능을 담당하고 있다.
우선 메뉴얼을 보고 다시 구글링 해보았다.
기본적으로 코드가 아무 에러 없이 실행을 마친다면 두 구문은 아무런 차이점이 없다. 하지만 에러가 발생한다면 처리하는 방법이 다르다.
조금더 복잡한 논의로 들어가보자. 우선 정리한 내용은 아래와 같다.실제 코딩하지 않았으므로 검증이 필요하다.
코딩해본 결과 조건별 include 와 require 는 같은 결과를 보였다.
더 나아가 퍼포먼스 관련 논의가 있지만 우선 패스하자.
require() 구문
PHP 파서가 실행되기 전에 파일을 포함한다. (C 의 #include 와 같은 개념)
에러 상황시 경고를 발생시키고 이후 코드의 실행이 중단된다.
include() 구문
PHP 프로세스가 진행되면서 파일을 포함한다. 구문을 만날때 마다 평가한다.
따라서 조건에 따라 파일을 코드를 추가하거나 제외할 수 있다.
에러 상황시 경고를 발생시킨 후 나머지 코드의 실행을 계속한다.
포함해야할 코드에서 예외상황 발생시 코드를 중단해야할 경우는 require() 를 사용하는 것이 좋을 것이다. 데이터베이스에 연결된다거나 코드의 실행에 있어서 반드시 필요한 로직을 점검해야하는 코드를 포함하고 있는 경우에 사용하도록 하자.
그 외 단순히 화면 출력용 공통 파일을 포함할 때는 include() 를 사용하여 코드의 진행을 막지 않는 편이 좋다.
그리고 각 구문 뒤에 _once() 가 붙는 구문은 말 그대로 해당 파일을 오직 한번만 불러오기 위한 구문이다. 여러번 사용되는 코드가 담긴 파일을 부르는 경우가 아니면 once() 가 포함된 구문을 사용하여 파일을 불러오는 것이 좋다.
우선 메뉴얼을 보고 다시 구글링 해보았다.
기본적으로 코드가 아무 에러 없이 실행을 마친다면 두 구문은 아무런 차이점이 없다. 하지만 에러가 발생한다면 처리하는 방법이 다르다.
조금더 복잡한 논의로 들어가보자. 우선 정리한 내용은 아래와 같다.
코딩해본 결과 조건별 include 와 require 는 같은 결과를 보였다.
구문 분석 전에 파일을 포함한다는 정보는 현 버전 (PHP 5.2) 에서는 정확하지 않은 정보입니다.
공식 사이트의 메뉴얼 대로 예외상황 발생시 코드의 진행에만 관계가 있습니다.
더 나아가 퍼포먼스 관련 논의가 있지만 우선 패스하자.
require() 구문
에러 상황시 경고를 발생시키고 이후 코드의 실행이 중단된다.
include() 구문
따라서 조건에 따라 파일을 코드를 추가하거나 제외할 수 있다.
에러 상황시 경고를 발생시킨 후 나머지 코드의 실행을 계속한다.
포함해야할 코드에서 예외상황 발생시 코드를 중단해야할 경우는 require() 를 사용하는 것이 좋을 것이다. 데이터베이스에 연결된다거나 코드의 실행에 있어서 반드시 필요한 로직을 점검해야하는 코드를 포함하고 있는 경우에 사용하도록 하자.
그 외 단순히 화면 출력용 공통 파일을 포함할 때는 include() 를 사용하여 코드의 진행을 막지 않는 편이 좋다.
그리고 각 구문 뒤에 _once() 가 붙는 구문은 말 그대로 해당 파일을 오직 한번만 불러오기 위한 구문이다. 여러번 사용되는 코드가 담긴 파일을 부르는 경우가 아니면 once() 가 포함된 구문을 사용하여 파일을 불러오는 것이 좋다.
개인적인 활용 정리
데이터베이스 코어 코드 : require_once()
Model 로직별 프로세스 코드 : require_once()
View 로직별 프로세스 코드 : include_once()
조건별 View 파트 포함 코드 : include()
'Development > Coding' 카테고리의 다른 글
DIV 안의 엘리먼트 세로 정렬 (0) | 2012.03.09 |
---|---|
PHPFog with SlimPHP 테스팅 (0) | 2012.02.21 |
커피스크립트에 대한 아쉬움 (0) | 2011.12.12 |
micro PHP framework 삽질기 (0) | 2011.12.06 |
CSS 애니메이션 작업 후기 (0) | 2011.11.30 |