Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить курсы бесплатно
ГлавнаяБлогКак подключать PHP-файлы и зачем это вообще нужно
Как подключать PHP-файлы
350 372
Время чтения: 3 минуты

Как подключать PHP-файлы и зачем это вообще нужно

350 372
Время чтения: 3 минуты
Сохранить статью:
Сохранить статью:

В статье рассказывается:

  1. Как подключить PHP из другой директории
  2. Как работает подключение кода PHP
  3. Различия `include`, `include_once`, `require`, `require_once`
  4. Подведём итоги
  5. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

Приветствую читателей блога! У вас наверняка уже есть небольшой опыт в кодинге на PHP. Возможно, вы уже разобрались с использованием переменных и базовых конструкций этого языка, а значит, логика вашего приложения увеличивается, как и количества кода.

Конечно, пока вся программа уменьшается в десяток строк, разбивать её на части не нужно. Но вы уже понимаете, что так будет не всегда: авторизация, отправка писем, взаимодействия с базой данных и т.д. – все это приведет к увеличению кода приложения.

Вы спросите: «Ну и что с того? Разве плохо писать всю логику в одном файле?». Стопроцентного ответа на этот вопрос нет, но мой опыт говорит, что код приложения, написанный в одном файле:

  • при дополнении и внесении новой логики приводит к частым ошибкам
  • требует большего времени для изучения другим разработчиком
  • через месяц-два при необходимости маленькой правки потребует у тебя гораздо больше времени на понимание кода, чем на саму правку.

Если этих доводов недостаточно – советую почитать книгу Роберта Мартина «Чистый код». А пока продолжу.

Представим, что у нас есть 2 файла: `index.php` и `1.php`, лежащих в одной директории.

Как подключать PHP-файлы

Файл «index.php»:

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
 
</body>
</html>

Файл «1.php»:

<h1>Hello World!</h1>

Задача: вывести содержимое файла «1.php» в контейнере `body`, при запуске файла «index.php». Решить её можно разными способами, и в этом посте мы рассмотрим некоторые из них. Подключение PHP возможно с помощью разных инструкций:

  • `include`
  • `include_once`
  • `require`
  • `require_once`
Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

pdf 3,7mb
doc 1,7mb
Уже скачали 27783 pdf иконка

Самый простой пример решения с `include`:

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php
        include '1.php';
    ?>
</body>
</html>

Результат запуска в браузере:

Как подключать PHP-файлы

Как подключить PHP из другой директории

Теперь изменим условия. Переместим файл `1.php` в папку с названием `test`, которую создадим в директории с файлом `index.php`.

Как подключить PHP из другой директории

Поскольку подключаемый файл находится в другой директории, для его подключения следует указать сначала папку, в которой он находится, а потом и сам файл.

Далее изменим код в `index.php`

<?php
    include 'test/1.php';
?>

Строка, что мы указываем после инструкции `include`, это путь к файлу. Он может быть относительный (к файлу, где используется подключение) и абсолютным (от корня файловой системы). В приложениях рекомендуются использовать относительные пути.

Между папками, файлами и другими папками в пути устанавливаются разделители. Универсальный разделитель для различных операционных систем – `/`.

Если в папке `test` у нас была бы еще папка `lot`, в которой лежал файл `1.php`, то относительный путь выглядел бы так: ‘test/lot/1.php’.

С путями немного разобрались – возвращаемся к инструкциям. Произведем изменения в файлах. Файл «index.php»:

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php
        $say = 'Hello world!';
        include 'test/1.php';
echo $test;
        echo "<p>End</p>";
    ?>
</body>
</html>

Файл `1.php`:

<?php
    echo "<h1>{$say}</h1>";
    $test = 'TEst connect';

Посмотрим на изменение в выводе:

Как подключить PHP из другой директории

Как работает подключение кода PHP

Интерпретатор php «читает» код сверху вниз и слева направо, как мы читаем книги на русском языке. На исполнение от сервера ему указывается файл «index.php», а значит, чтение начинается с него. Дойдя до строчки с `include ‘test/1.php’`, интерпретатор пытается найти и исполнить это файл так, как будто он является частью «index.php».

Перед подключением и исполнением файла «1.php» уже существует переменная `$say`, в которой содержится ‘Hello world!’. При выполнении файла «1.php», содержимое этой переменной выводится на экран и создается переменная `$test`, которая в свою очередь и выводится на экран в файле `index.php`.

Если описанное выше непонятно, советую немного поиграться с файлами `1.php` и `index.php` создавая и выводя в них переменные.

Различия `include`, `include_once`, `require`, `require_once`

Переименуем файл «1.php»в файл «2.php» и обратимся к «index.php»:

Различия `include`

В итоге получаем ошибку. Но обратите внимание на то, что после вывода ошибки код PHP все равно продолжил выполнение и вывел `End`. Заменим `include` на `require` и запустим на выполнение.

В итоге видим похожие ошибки, но не видим вывода `End` в конце: после ошибки код php прекратил свою работу.

Разница между `include` и `require` заключается в том, что при подключении файла PHP первая инструкция позволяет продолжить выполнения скрипта, если не найден файл, а `require` завершает его, выводя фатальную ошибку.

Теперь рассмотрим отличие инструкций `require` и `require_once`. Внесем небольшие правки в наши файлы. Вот новый «index.php»:

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php
        $say = 'Hello world!';
        require 'test/2.php';
        require 'test/2.php';
        require 'test/2.php';
        require 'test/2.php';
        echo "<p>End</p>";
    ?>
</body>
</html>
Дарим скидку от 60%
на обучение «Веб-разработчик» до 21 апреля
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

И файл «2.php»:

<?php
    echo "<h1>{$say}</h1>";

Запускаем:

Различия `include`

Как видно на скриншоте, с помощью `require` мы успешно подключили файл несколько раз. Снова внесем изменение в файлы. Новый файл «index.php»:

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php
        require 'test/2.php';
        require 'test/2.php';
        require 'test/2.php';
        require 'test/2.php';
        echo "<p>End</p>";
    ?>
</body>
</html>

И новый файл «2.php» — на этот раз объявим там функцию:

<?php
    echo '<p>Im included</p>';
    function sayHello($say)
    {
        echo "<h1>{$say}</h1>";
    }
Только до 22.04
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

Результат выполнения:

Различия `include`

Второе подключение файла «2.php» приводит к ошибке, как раз потому что в этом файле происходит объявление функции. А в PHP-скрипте двух одинаковых функций быть не должно.

Теперь заменим все `require` на `require_once` и запустим снова:

Различия `include`

Ура, работает! Но обратим внимание на то, что файл подключился только один раз.

Теперь вновь переименуем файл `2.php` в `1.php` и запустим «index.php».

Различия `include`

`Require_once`, так же как и `require` завершает выполнение скрипта, если не найден файл указанный для подключения. Заменим `require_once` на `include_once`:

Различия `include`

Ошибок стало больше, но код по-прежнему отработал до конца: end в конце картинки это подтверждает. Внесем правки в «index.php»:

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php
        include_once 'test/1.php';
        include_once 'test/1.php';
        include_once 'test/1.php';
        include_once 'test/1.php';
        echo "<p>End</p>";
    ?>
</body>
</html>

Запустим код:

Подведём итоги

Подведём итоги

Чтобы подключить PHP-файлы, можно воспользоваться четырьмя похожими инструкциями — `include` и `include_once`, `require` и `require_once`.

  • Разница между `include` и `require`: при отсутствии файла последняя выводит фатальную ошибку, а первая — нет.
  • Разница между `include` и `include_once` (а также `require` и `require_once` соответственно): инструкции с “once” проверяют перед подключением, был ли этот файл подключен ранее. Если он подключался, повторного подключения не произойдет.
  • Разница между `require_once` и `include_once`: думаю, она понятна из двух предыдущих пунктов 🙂

Если вы хотите освоить PHP во всей его полноте — приглашаем вас на курсы PHP-разработки в GeekBrains. За шесть месяцев вы изучите не только работу с PHP, но и другие важные в профессии технологии — фреймворк Laravel, базы данных MS SQL и Postgre SQL, основы HTML/CSS и ООП. А также сможете пройти полноценную онлайн-стажировку!

Оцените статью
Рейтинг: 4
( голосов 2 )
Поделиться статьей
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
До конца акции осталось
0 дней 00:00:00
Дарим скидку 64% на обучение «Разработчик»
  • Получите новую профессию с гарантией трудоустройства
  • Начните учиться бесплатно, 3 месяца обучения в подарок
Забронировать скидку на обучение
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...