Блог
Анатолия Борисова

Как повысить свою долю в экспорте программного
обеспечения из России до 1 000 000 рублей в год?

Подарок

для каждого подписавшегося
на нашу рассылку

Вопросы и ответы по загрузке файлов и пространствам имён в PHP

Вопрос 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 %}
  • 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 позволяет удобно ссылаться на классы.

Комментариев еще нет.

Оставить комментарий