composer.json Минимальный пример манифеста для проекта -- пакета (репозитория). Для автозагрузки по PSR-4

Что должно быть в используемом пакете

Минимальные сведения о пакете могут выглядеть так:

{
    "name": "it-for-free/php-examples",
    "type": "php-class",
    "description": "Simple example of php view -- MVC, пример реализации представляения, отделения php от html",
    "keywords": ["php", "itforfree", "mvc", "view", "html"],
    "homepage": "ссылкаНаДомашнююСтраницу",
    
    "autoload": {
        "psr-4": {
            "ItForFree\\PhpExamples\\": ""
        }
    }
}

-- файл composer.json с подобным содержимым должен лежать в корне вашего пакета, как это сделано например здесь.

Что есть что

В приведённом выше примере:

  1. "name": "it-for-free/php-examples",

    -- есть имя пакета, где в первой части обычно указывают команду или создателя, а в правой (после слэша -- название).

  2. Далее идут не особо важные поле, описывающие пакет, самое же интресное начинается в секции:
       
     "autoload": {
            "psr-4": {
                "ItForFree\\PhpExamples\\": ""
            }
        }

    -- тут показано, что загружать данные из проекта мы будем по стандарту PSR-4 И указано пространство имён, которое будет соответствовать корневой папке пакета:

    "ItForFree\\PhpExamples\\": ""

    (в нашем примере корневой -- поэтому внутри кавычек ничего нет).
    Это значит, что все пространства имен в нашем пакете, как ожидается будут начинаться со строки:

    ItForFree\PhpExamples

    -- а точнее:
    Если автозагрузчик композера, встретит ещё не изветсный класс, у которого имя пространства будет начинаться на, то он попытывает загрузить его именно из папки (в общем случае):

    vendor/имя-разработчика/имя-пакета

    -- т.е. из той папки, куда разместит наш пакет при выполнении команды

Можно почитать подробнее о назначении базовой директории.