Вопрос 1. Используется ли include в современных фреймворках Laravel и Symfony?
В современных PHP‑фреймворках, таких как Laravel и Symfony, директивы
include
, require
, include_once
и require_once
практически не используются вручную.
- Автозагрузка классов (PSR‑4) автоматически подключает нужные файлы.
- DI‑контейнер (Dependency Injection) управляет зависимостями без ручного include.
- Для шаблонов используются:
- Blade в Laravel:
@include
,@extends
,@component
- Twig в Symfony:
{% include %}
- Blade в Laravel:
- Composer управляет автозагрузкой через
vendor/autoload.php
.
Пример автозагрузки вместо include
Ниже простой пример структуры проекта и кода с PSR‑4 автозагрузкой через Composer:
Структура проекта
my-app/
├── composer.json
├── index.php
└── src/
└── App/
└── Hello.php
composer.json
{ "autoload": { "psr-4": { "App\\": "src/App/" } } }
src/App/Hello.php
namespace App; class Hello { public function say(): string { return "Привет, автозагрузка!"; } }
index.php
<?php require __DIR__ . '/vendor/autoload.php'; // автозагрузка use App\Hello; $hello = new Hello(); echo $hello->say(); // Выведет: Привет, автозагрузка!
Для генерации автозагрузчика выполните composer dump-autoload
.
Вопрос 2. Чем отличается use от include?
include
и use
— это разные вещи:
-
include
/require
— вставляют и выполняют код из другого файла во время выполнения скрипта. -
use
— объявляет алиасы и импорт пространств имён на уровне PHP-кода,
не подключая файлов.
Пример без автозагрузки:
include 'src/App/Hello.php'; $hello = new App\Hello(); echo $hello->say();
Пример использования use
:
<?php namespace MyProject; use DateTime; use App\Services\MailService as Mail; $dt = new DateTime(); $mail = new Mail();
Если автозагрузка настроена через Composer, vendor/autoload.php
подключается один раз, а use
позволяет удобно ссылаться на классы.
Лучший стример года
Анатолий Борисов
Лучший стример года
Алексей
Декабрьское обновление Rust
Вавада актуальное зеркало + на сегодня
Декабрьское обновление Rust
Анатолий Борисов