index.php и require — точка входа и подключение
PHP-файл выполняется сверху вниз при каждом HTTP-запросе или запуске php script.php. Аналог Python if __name__ == "__main__": — разделение ролей: один entrypoint (public/index.php, artisan, CLI-скрипт) и подключаемые файлы только с функциями и классами.
См. также: Первая программа · Composer и автозагрузка · Python — __name__.
Проблема «всё в одном файле»
<?php
function add(int $a, int $b): int {
return $a + $b;
}
echo add(5, 3); // выполнится при каждом require!
Файл require 'calculator.php' из другого скрипта тоже выведет 8.
Подключаемый файл без побочных эффектов
<?php
// src/Calculator.php — только определения
function calculator_add(int $a, int $b): int {
return $a + $b;
}
<?php
// bin/demo.php — точка входа CLI
require __DIR__ . '/../src/Calculator.php';
echo calculator_add(5, 3);
Запуск: php bin/demo.php. Подключение Calculator.php из веб-приложения не печатает демо.
Веб — public/index.php
Современные проекты (Laravel, Symfony) направляют все запросы в один front controller:
public/
index.php ← единственная точка входа HTTP
src/
… ← классы, подключаются автозагрузчиком
Nginx/Apache отдаёт только public/. Остальные .php не должны быть доступны по URL — иначе их можно вызвать напрямую с побочным кодом. Пример конфига nginx + PHP-FPM — Nginx — конфиги под задачу.
CLI и проверка SAPI
Для скрипта, который иногда подключают, иногда запускают:
<?php
function add(int $a, int $b): int {
return $a + $b;
}
if (php_sapi_name() === 'cli' && basename(__FILE__) === basename($_SERVER['argv'][0] ?? '')) {
echo add(5, 3);
}
На практике проще два файла: библиотека + bin/ скрипт — как в Python с отдельным main.py.
require_once и автозагрузка
| Механизм | Назначение |
|---|---|
require / include | Подключить файл (ошибка, если нет) |
require_once | Подключить один раз |
| Composer PSR-4 | Классы без ручного require |
Файлы с классами не должны выводить HTML или запускать БД при загрузке — только объявления.
Сравнение с Python
| Python | PHP |
|---|---|
if __name__ == "__main__": | Отдельный index.php / bin/ + «чистые» include |
import module | require / autoload class |
| Код верхнего уровня при import | Выполняется при каждом include |
Дальше по разделу
| Тема | Статья |
|---|---|
| Первая программа | 13 — Первая программа |
| Composer | 111 — Composer |
| Laravel entry | 1431 — Laravel |
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). 6 элементов 5 элементов PHP — препроцессор гипертекста и сценарный язык на сервере: встраивание в HTML, синтаксис и место в веб-стеке. Экосистема PHP-приложений - фреймворки, инструменты, пакеты и типовые архитектурные подходы веб-разработки. PHP — это язык программирования общего назначения, который изначально создавался для динамической генерации веб-страниц. Модель исполнения PHP — жизненный цикл запроса, серверный контекст и экосистема популярных CMS. История PHP - эволюция языка от простых скриптов до зрелой платформы серверной веб-разработки. Composer и composer.json — require, install и update, ограничения версий, команды CLI и пример с Laravel dev-веткой. Параметр opcache.fast_shutdown ускоряет завершение работы скрипта за счёт пропуска стандартной процедуры освобождения памяти. Вместо этого используется механизм сборщика мусора операционной системы. Локальная среда разработки на PHP - настройка стека, запуск приложения и отладка без продакшен-сервера. Набор советов, правил, принципов и обычаев в разработке на этом языке. Фреймворки и библиотеки PHP — организация сервисов, вспомогательные компоненты и ускорение разработки веб-приложений.phpMyAdmin
phpPgAdmin
PHP - язык веб-разработки
Экосистема PHP-приложений
Что требуется знать перед началом изучения языка программирования PHP
Модель исполнения PHP
История языка PHP
Composer - управление зависимостями в PHP
Настройка веб-сервера для работы с PHP
Локальная среда разработки на PHP
Рекомендации по разработке на PHP
Фреймворки и библиотеки PHP