ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
Designed by Tistory.