Появились функции для каталога, проверки оценки и форматирования. Если сложить их все в index.php, файл быстро станет похож на ящик, куда без разбора бросают инструменты. Разделим проект на папки, а Composer научит PHP автоматически находить наши классы.
Что делает Composer
Composer — менеджер зависимостей PHP. Он устанавливает библиотеки, фиксирует их версии в файлах проекта и может автоматически подключать ваши классы. Даже если проект пока не использует сторонние пакеты, автозагрузка избавляет от ручного require для каждого класса.
Создаём описание проекта
В корне reading-log выполните:
composer init
Мастер создаст файл composer.json. Добавьте в него правило PSR-4, связывающее пространство имён App\ с папкой src/:
{
"name": "example/reading-log",
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
После изменения правила пересоберите карту автозагрузки:
composer dump-autoload
Composer создаст каталог vendor/ и файл vendor/autoload.php. Этот каталог не редактируют вручную и обычно не добавляют в Git: он создаётся командой установки из описания зависимостей.
Первый класс в своём пространстве имён
Создайте файл src/Book.php:
<?php
declare(strict_types=1);
namespace App;
final class Book
{
public function __construct(
public string $title,
public int $year,
) {}
}
Строка namespace App; задаёт пространство имён — как адрес класса внутри проекта. Имя App\Book не конфликтует с таким же коротким именем в другой библиотеке. PSR-4 сопоставляет этот класс файлу src/Book.php.
В public/index.php подключите автозагрузчик и используйте класс:
<?php
declare(strict_types=1);
require dirname(__DIR__) . '/vendor/autoload.php';
$book = new App\Book(title: 'Дюна', year: 1965);
echo $book->title;
Что хранить в Git
composer.json— названия зависимостей и правила проекта.composer.lock— точные выбранные версии, если файл создан Composer.src/иpublic/— ваш код.vendor/— обычно исключают: его можно восстановить.
В разных типах приложений команда Composer может отличаться: install использует зафиксированные версии из lock-файла, а update пересчитывает версии в пределах ограничений. Для воспроизводимого проекта обычно добавляют оба файла, composer.json и composer.lock.
Проверьте структуру
Запустите страницу и создайте объект App\Book. Если класс не находится, проверьте три совпадения: имя пространства имён, путь из PSR-4 и имя файла с учётом регистра. На некоторых компьютерах регистр букв в имени файла критичен.
В следующей части дадим книге собственное поведение и правила создания. Класс нужен не ради «объектного программирования», а чтобы нельзя было случайно создать запись без названия или передать год текстом.
Навигация по курсу
Часть 6 из 16.
← Часть 5: Функции PHP: типы аргументов, return и полезные правила · Часть 7: Классы и объекты PHP: создаём модель книги →
0
8