0Pricing
PHP Academy · 강의

파일 포함 및 불러오기

include와 require로 페이지를 재사용 가능한 부분으로 나눕니다.

파일 포함 및 불러오기은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

파일 포함을 통한 코드 재사용

PHP는 다른 파일의 코드를 포함하는 네 가지 문을 제공합니다:

  • include — 파일을 포함하며, 파일이 없으면 경고합니다
  • require — 파일을 포함하며, 파일이 없으면 치명적 오류가 발생합니다
  • include_once — 아직 포함되지 않은 경우에만 파일을 포함합니다
  • require_once — 아직 포함되지 않은 경우에만 파일을 요구합니다

include 및 require

핵심 차이점은 다음과 같습니다. require 파일이 없으면 치명적 오류가 발생하지만, include 파일이 없으면 경고만 표시됩니다:

<?php
// Fatal error if missing — use for critical files
require 'config.php';
require 'database.php';

// Warning if missing, but execution continues
include 'optional_plugin.php';

// Use __DIR__ for reliable relative paths:
require __DIR__ . '/helpers/utils.php';

include_once 및 require_once

_once 변형은 같은 파일이 여러 번 포함되는 것을 방지합니다:

<?php
// Without _once: including twice redefines functions
include 'functions.php';
include 'functions.php';  // Fatal: function redefined!

// With _once: second include is a no-op
require_once 'functions.php';
require_once 'functions.php';  // safe — skipped

// Rule: use require_once for class and function definition files

포함된 파일의 변수 범위

포함된 파일은 포함한 파일의 범위를 공유하지만 함수 범위는 공유하지 않습니다:

<?php
// main.php
$title = 'My Site';
require 'header.php';  // header.php can use $title

// But in a function:
function loadTemplate(): void {
    require 'header.php';  // $title is NOT accessible here!
    // Must pass data explicitly
}

포함된 파일에서 값 반환

포함 파일은 return 문을 사용하여 값을 반환할 수 있습니다:

<?php
// config.php content:
// return ['debug' => true, 'db_host' => 'localhost'];

// main.php:
$config = require 'config.php';
echo $config['db_host'];  // localhost

// Common pattern for configuration files that return arrays

간단한 레이아웃 만들기

페이지를 재사용 가능한 머리글, 콘텐츠, 바닥글 파일로 나눕니다:

<?php
// index.php
$pageTitle = 'Home Page';
$bodyClass = 'home';

require_once 'partials/header.php';
?>

<main class="container">
    <h1>Welcome!</h1>
    <p>Main content goes here.</p>
</main>

<?php require_once 'partials/footer.php'; ?>

템플릿 부분 뷰

반복되는 구성 요소를 위한 재사용 가능한 부분 뷰 파일을 만듭니다:

<?php
// partials/card.php
// Expects: $card['title'], $card['body'], $card['url']
?>

<div class="card">
    <h3><a href="<?= htmlspecialchars($card['url']) ?>">
        <?= htmlspecialchars($card['title']) ?>
    </a></h3>
    <p><?= htmlspecialchars($card['body']) ?></p>
</div>

부분 뷰에 변수 전달

포함하기 전에 지역 변수에 값을 할당하여 부분 뷰에 데이터를 전달합니다:

<?php
$articles = getArticles();

foreach ($articles as $article) {
    $card = [
        'title' => $article['title'],
        'body'  => substr($article['body'], 0, 100) . '...',
        'url'   => '/articles/' . $article['slug'],
    ];
    require 'partials/card.php';
}

include와 자동 로딩 비교

Composer를 사용하는 최신 PHP에서는 클래스 파일이 자동 로드되므로 직접 포함하지 않습니다:

<?php
// Old way (manual includes):
require 'classes/User.php';
require 'classes/Post.php';

// Modern way (Composer autoloading):
require __DIR__ . '/vendor/autoload.php';

// Classes are loaded automatically when first used
$user = new User();  // User.php loaded by autoloader
$post = new Post();  // Post.php loaded by autoloader

보안: 경로 순회 방지

검증되지 않은 사용자 입력을 바탕으로 파일을 절대 포함하지 않습니다:

<?php
// DANGEROUS:
$page = $_GET['page'];
include $page . '.php';  // allows ../../etc/passwd

// SAFE: whitelist allowed pages
$allowed = ['home', 'about', 'contact'];
$page = $_GET['page'] ?? 'home';

if (!in_array($page, $allowed)) {
    $page = 'home';
}

include __DIR__ . '/pages/' . $page . '.php';

include_path 구성

전체 경로 없이 파일을 포함할 수 있도록 PHP의 include_path를 구성합니다:

<?php
// Current include_path:
echo get_include_path();

// Add your library directory:
set_include_path(
    get_include_path() . PATH_SEPARATOR . '/var/www/lib'
);

// Now you can include without full path:
include 'helpers.php';  // found in /var/www/lib/helpers.php

빠른 확인

파일이 없을 때 include와 require의 차이는 무엇입니까?

복습: 파일 포함

요약:

  • require — 파일이 없으면 치명적 오류가 발생하므로 중요한 파일에 사용합니다
  • include — 파일이 없으면 경고하므로 선택적 파일에 사용합니다
  • _once 변형은 중복 로드를 방지합니다
  • 포함된 파일은 호출 측의 변수 범위를 공유합니다
  • 파일은 return으로 값을 반환할 수 있습니다
  • 사용자 입력에서 경로를 가져와 파일을 포함하지 말고, 허용 목록만 사용합니다

자주 묻는 질문

“파일 포함 및 불러오기” 강의는 무료인가요?

네 — “파일 포함 및 불러오기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“파일 포함 및 불러오기”에서 뭘 배우나요?

include와 require로 페이지를 재사용 가능한 부분으로 나눕니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

PHP Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“파일 포함 및 불러오기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. PHP 태그 및 삽입 문법
  2. PHP 반복문으로 동적 HTML 만들기
  3. 파일 포함 및 불러오기
  4. 템플릿 패턴: 로직과 뷰 분리
← PHP Academy(으)로 돌아가기