#1 composer Автозагрузка внутренних, собственных классов проекта - начало работы
Primary tabs
В этом уроке мы начнем разбираться с работой менеджера зависимостей Composer в части того, что он предоставляет собственную стандартизированную автозагрузку классов для проекта (без учета того, что он еще и управляет зависимостями, с которыми мы разберемся в следующих уроках)
Итак, кратко о том что такое зависимости и пакеты. Прочитали?
Мы уже стакивались с ними в разделе по SimpleMVC.
Делать этот урок мы будем на примере решения задачи
Задача
У нас есть какой-то код (пусть он лежит в файле index.php):
<?php echo A::getValue();
-- как видите, тут на экран выводится значение, которое возвращает статический метод класса А.
Наша задача: реализовать указанный класс (пусть этот метод возвращает строчку "Привет мир!") и загрузить этот класс через пространство имен с помощью composer.
Теоретическая подготовка
Что надо знать понимать:
- Стандарт PSR-4 и его требования к именованию файлов и папок в автозагрузке, с учетом этого пояснения и вот этого тоже
Ответьте на вопросы:
- Что такое пространства имен в PHP?
- Как связана автозагрузка классов и пространство имен?
- Что происходит, если интерпретатор встречает имя класса, которое не было известно по уже загруженному код? Можем ли мы вызвать свой код, который решить проблему в данной ситуации?
Реализация
ВНИМАНИЕ: если вы застряли на каком-то пункте (не можете сдвинуться в течении 30 мин. и более) - задавайте вопросы!
- Создаем новый проект в вашей IDE
- Весь исходный код будем класть в папку src (см о структуре типового проекта)
- Переносим файл index.php из примера выше в директорию public/ (корень сайта)
- Создадим git репозиторий в нашем проекте (ну или "сделаем наш проект репозиторием")
- Запушим наш проект на гитхаб (для этого создадим новый проект на гитхабе -вообще пустой без README.md и без
- Создадим виртуальный хост с доменным именем, напр. pr1.loc так, чтобы по умолчанию открывался index.php, при открытии страницы в браузере должна появляться ошибка в роде такой
PHP Fatal error: Uncaught Error: Class "A" not found in /var/www/....index.php:3 Stack trace: #0 {main} thrown in /var/www/....index.php on line 3
-- она как раз про то, что не найдено имя класса. Если ошибка выводится - все нормально. Можно переходить к следующим пунктам.
- Официальный сайт Composer -- у них там есть стартовый раздел.
- Наш справочник по Composer
- Добавим composer в наш проект
- Cоздадим папку src/lib
- Создадим в ней класс А, реализуем его метод, который требует клиентский код (в нашем случае это код index.php) выше
- Назначим нашему классу какое-то пространство имен
- Импортируем пространство имен в клиентский код
- Настраиваем автозагрузку
- Обновляем главную страницу сайта, теперь на экране должно выводиться:
Привет мир!
Подготовка к выполнению задачи
Выполнение задачи
Отлично, первая часть готова, можно приступать к самой задаче.
Какие материалы можно и нужно использовать:
- Log in to post comments
- 636 reads