#1 composer Автозагрузка внутренних, собственных классов проекта - начало работы

В этом уроке мы начнем разбираться с работой менеджера зависимостей Composer в части того, что он предоставляет собственную стандартизированную автозагрузку классов для проекта (без учета того, что он еще и управляет зависимостями, с которыми мы разберемся в следующих уроках)

Итак, кратко о том что такое зависимости и пакеты. Прочитали?
Мы уже стакивались с ними в разделе по SimpleMVC.
Делать этот урок мы будем на примере решения задачи

Задача

У нас есть какой-то код (пусть он лежит в файле index.php):

<?php

echo A::getValue();

-- как видите, тут на экран выводится значение, которое возвращает статический метод класса А.
Наша задача: реализовать указанный класс (пусть этот метод возвращает строчку "Привет мир!") и загрузить этот класс через пространство имен с помощью composer.

Теоретическая подготовка

Что надо знать понимать:

Ответьте на вопросы:

  1. Что такое пространства имен в PHP?
  2. Как связана автозагрузка классов и пространство имен?
  3. Что происходит, если интерпретатор встречает имя класса, которое не было известно по уже загруженному код? Можем ли мы вызвать свой код, который решить проблему в данной ситуации?

Реализация

ВНИМАНИЕ: если вы застряли на каком-то пункте (не можете сдвинуться в течении 30 мин. и более) - задавайте вопросы!

    Подготовка к выполнению задачи

  1. Создаем новый проект в вашей IDE
  2. Весь исходный код будем класть в папку src (см о структуре типового проекта)
  3. Переносим файл index.php из примера выше в директорию public/ (корень сайта)
  4. Создадим git репозиторий в нашем проекте (ну или "сделаем наш проект репозиторием")
  5. Запушим наш проект на гитхаб (для этого создадим новый проект на гитхабе -вообще пустой без README.md и без
  6. Создадим виртуальный хост с доменным именем, напр. 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
    

    -- она как раз про то, что не найдено имя класса. Если ошибка выводится - все нормально. Можно переходить к следующим пунктам.

  7. Выполнение задачи

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

  8. Официальный сайт Composer -- у них там есть стартовый раздел.
  9. Наш справочник по Composer
  10. Добавим composer в наш проект
  11. Cоздадим папку src/lib
  12. Создадим в ней класс А, реализуем его метод, который требует клиентский код (в нашем случае это код index.php) выше
  13. Назначим нашему классу какое-то пространство имен
  14. Импортируем пространство имен в клиентский код
  15. Настраиваем автозагрузку
  16. Обновляем главную страницу сайта, теперь на экране должно выводиться:
    Привет мир!

Key Words for FKN + antitotal forum (CS VSU):