파일 포함 및 불러오기
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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.