Autoload секция

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

Одна из главных возможностей Composer — это автоматическая загрузка классов (autoloading). Благодаря ей вам не нужно писать десятки require_once в начале каждого файла. Вы просто используете класс, а PHP сам находит нужный файл.

Настройка происходит в файле composer.json в секции "autoload". Самый популярный стандарт — PSR-4.

Пример настройки:
"autoload": { "psr-4": { "App\": "src/" } }

Это говорит Композеру: «Все классы, начинающиеся с пространства имен App, ищи в папке src/». После изменения этой секции обязательно нужно выполнить команду composer dump-autoload. Разберемся, как правильно настраивать пути.

Список тем

1. Структура JSON

id: 39257_comp_auto_01_click

Перед вами содержимое файла composer.json. Внимательно изучите структуру JSON. Ваша задача — найти и выделить кликом всю секцию `autoload`, включая её ключ и соответствующее значение (объект). Не отмечайте другие секции файла, такие как `require`, `name`, `description` или комментарии.

Кликните по всем фрагментам, которые подходят под условие задания.
{
    "name": "acme/my-project",
    "description": "An example project",
    "type": "project",
    {{ "require": {~|~t1}}
        "php": ">=7.4",
        "monolog/monolog": "^2.0"
    },
    {{ "autoload": {~|~t2}}
        {{ "psr-4": {~|~t3}}
            {{ "Acme\\": "src/"~|~t4}}
        }
    },
    {{ "config": {~|~t5}}
        "optimize-autoloader": true
    }
}
Сообщения
Проверить
Показать подсказку

2. Пространство и папка

id: 39257_comp_auto_02_compare

Сопоставьте каждый префикс пространства имен (Namespace) из левой колонки с соответствующей физической директорией на диске, согласно стандарту автозагрузки PSR-4. В правой колонке приведены относительные пути к папкам, в которые должны быть помещены файлы классов для заданного пространства имен.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
'MyApp\Controller\'
'Acme\Blog\'
'Vendor\Package\Tests\'
'App\'
app/
tests/
src/Controller/
src/Blog/
Сообщения
Проверить
Показать подсказку

3. Настройка PSR-4

id: 39257_comp_auto_03_replace

В файле composer.json для проекта настроена автозагрузка классов по стандарту PSR-4. В секции autoload пропущено ключевое слово, указывающее используемый стандарт, и путь к исходному коду для неймспейса MyProject\. Заполните пропуски так, чтобы автозагрузка корректно работала для классов, расположенных в папке app/, с префиксом неймспейса MyProject\. Обратите внимание на структуру JSON-массива.

Заполните пропуски
{
  "name": "myproject/app",
  "autoload": {
    input1S: {
      input2S: input3S
    }
  }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Файлы и Классы

id: 39257_comp_auto_04_sort

Перед вами список сущностей, связанных с настройкой автозагрузки в Composer и её результатом. Разнесите их по двум категориям: 1) «Конфигурация» — то, что относится к настройкам в файле composer.json; 2) «Результат» — то, что создаётся или подключается после работы Composer. Каждый элемент должен оказаться в одной из категорий.

Перетяните элементы в соответствующие блоки
Конфигурация
Результат
{"autoload": {"psr-4": {"App\\": "src/"}}}
vendor/autoload.php
PSR-4 mapping for 'MyVendor\MyPackage'
"classmap": ["src/legacy/"]
require __DIR__ . '/vendor/autoload.php';
Файл composer.json в корне проекта
Загруженный класс MyVendor\MyPackage\MyClass
Сообщения
Проверить
Показать подсказку

5. Ошибка в пути

id: 39257_comp_auto_05_error

В приведённом файле composer.json есть ошибка в секции автозагрузки PSR-4. Из-за этой ошибки классы не будут находиться корректно. Найдите строку с ошибкой и исправьте её, чтобы автозагрузчик правильно сопоставлял пространства имён и пути к файлам.

Найдите ошибку и исправьте
{
    "name": "myproject/app",
    "autoload": {
        "psr-4": {
            "App": "src/"
        }
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Сборка конфига

id: 39257_comp_auto_06_build

В данном задании необходимо собрать корректный блок `autoload` для файла `composer.json` из предложенных строк. Блок должен содержать ключ `psr-4` с правильным маппингом неймспейса `App\` на директорию `src/`. Одна из строк является лишней и не должна входить в финальное решение. Правильный порядок строк обеспечивает валидный JSON-синтаксис для секции автозагрузки.

Перетяните в правильном порядке строки из одного блока в другой
"autoload": {
    "psr-4": {
        "App\\": "src/"
    }
}
"autoload-dev": {
        "App/": "src/"
    "classmap": ["src/"]
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Алгоритм подключения

id: 39257_comp_auto_07_sequencing

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

Расставьте строки в правильном порядке
Создать объект требуемого класса (например, new Vendor\Package\SomeClass()) и использовать его функционал.
Добавить информацию о пространстве имен (namespace) и пути к классам в секцию 'autoload' файла composer.json.
В файле index.php подключить автозагрузчик командой: require_once __DIR__ . '/vendor/autoload.php';
В терминале, в корне проекта, выполнить команду: composer dump-autoload
Сообщения
Проверить
Показать подсказку

PHP: запуск кода в браузере

id: 39257_compiler
🐘
Запустить тренажёр (PHP)
НайтиКурс.Ру