0Pricing
PHP Academy · Урок

Подключение и обязательное подключение файлов

Разделяйте страницы на повторно используемые части с помощью 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 — локальная установка не требуется.

Все уроки этого курса

  1. Теги PHP и синтаксис встраивания
  2. Динамический HTML с циклами PHP
  3. Подключение и обязательное подключение файлов
  4. Шаблонный подход: отделение логики от представления
← Назад к PHP Academy