-
[PHP] include(), include_once(), require(), require_once() 차이 알아보기ETC/Php 2023. 1. 17. 11:04
php 에서 다른 파일 서버를 현재 파일에 호출 할 수 있는 함수는
include / include_once / require / require_once
이 네가지가 있는데 각각 어떤 차이점이 있을까 궁금하여 알아보았다
include / require 개념
include 와 require 은 모두 다른 파일의 서버를 현재 실행중인 스크립트(파일)에서 호출하는 함수이다.
이 함수로 다른 서버 파일을 불러오게 되면, 불러온 서버에 있는 모든 내용이 현재 실행 중인 파일에 포함된다
include / include_once 차이점
그 전에 우선 include 와 include_once 의 차이점부터 알아보자
require 도 마찬가지로 그냥 require 과 require_once 가 있는데, _once가 붙고 안붙고의 차이는 바로 '함수 중복 호출 여부' 이다.① include / require
그냥 include / require 을 사용하게 되면 같은 파일을 두번 중복하여 호출하여도 그대로 호출된다.
예를 들어
include $_SERVER['DOCUMENT_ROOT'].'/main-backend/connect/dbconn.php'; include $_SERVER['DOCUMENT_ROOT'].'/main-backend/connect/dbconn.php';
이렇게 같은 파일을 두 번 호출하여도 문제없이 두번 그대로 호출된다는 것이다.
② include_once / require_once
하지만 include_once / require_once 는 중복호출을 하여도 한번만 호출된다
include_once $_SERVER['DOCUMENT_ROOT'].'/main-backend/connect/dbconn.php'; include_once $_SERVER['DOCUMENT_ROOT'].'/main-backend/connect/dbconn.php';
이렇게 같은 서버를 두 번 호출하여도 이 서버는 한번만 호출된다.
include / require 차이점
① 조건문include 는 조건문 안에 작성할 경우, 그 조건이 충족되어야만 서버를 호출한다
// 조건 충족 여부에 따라 서버 호출 if(조건) { include $_SERVER['DOCUMENT_ROOT'].'/main-backend/connect/dbconn.php'; }
만일 조건이 충족하지 않으면 호출하지 않는다.
하지만 require 은 조건문 안에 있어도 조건 충족 여부에 관련없이 무조건 서버를 호출한다.
조건문 안에 있는 조건이 false 여도 서버는 호출이 된다.// 무조건 서버 호출 if(조건) { require $_SERVER['DOCUMENT_ROOT'].'/main-backend/connect/dbconn.php'; }
② 서버 호출 실패시 파일 실행 여부
예를 들어 존재하지 않는 파일을 호출하는 등의 경우로 서버 호출에 실패할 수 있다.
이 때 include 와 require 의 차이점이 발생한다.
include 를 사용하여 서버를 호출하였을 경우,
서버 호출에 실패했더라도 다음 코드로 진행을 한다. 그래서 다음 코드를 실행하는 것에 있어서 문제가 없다.include $_SERVER['DOCUMENT_ROOT'].'없는 파일'; // 서버호출 실패 echo "end"; // 출력됨
하지만 require 을 사용하여 서버 호출하였을 경우,
서버 호출에 실패하면 다음 코드로 넘어가지 않는다.require $_SERVER['DOCUMENT_ROOT'].'없는 파일'; // 서버호출 실패 echo "end"; // 출력 안됨
공부를 하다가 문득 차이점이 궁금해져 정리해보았다
참고자료
https://appsnuri.tistory.com/439
https://sojinhwan0207.tistory.com/110'ETC > Php' 카테고리의 다른 글
[PHP] php 기본 문법 (0) 2022.12.15