Подключение и обязательное подключение файлов
Разделяйте страницы на повторно используемые части с помощью include и require
«Подключение и обязательное подключение файлов» — бесплатный урок PHP Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения 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 и автозагрузка
В современном PHP с Composer файлы классов загружаются автоматически — подключать их вручную не нужно:
<?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
Настройте include_path PHP, чтобы подключать файлы без указания полных путей:
<?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) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Подключение и обязательное подключение файлов»?
Разделяйте страницы на повторно используемые части с помощью include и require Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Подключение и обязательное подключение файлов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Теги PHP и синтаксис встраивания
- Динамический HTML с циклами PHP
- Подключение и обязательное подключение файлов
- Шаблонный подход: отделение логики от представления