Правильная структура для библиотек github

0

Я написал класс cURL, который хотел разделить на github, а также сделать доступным через композитора. Я успешно разместил свою lib на github https://github.com/tzfrs/SimpleCurl, но у меня все еще есть проблемы с пониманием правильной структуры папок.

В настоящее время у меня это так:

  • Репозиторий git называется "SimpleCurl"
  • Репозиторий содержит папку с именем src/
  • В папке src/ есть файл SimpleCurl.php который является классом SimpleCurl
  • Класс SimpleCurl однако, находится в пространстве имен tzfrs/Util/
  • Файл composer.json содержит следующую информацию

"autoload": { "psr-4": { "tzfrs\\Util\\": "src/" } }

Теперь моя проблема в понимании: хорошо ли, что SimpleCurl.php -file находится непосредственно в папке src/? Или он должен находиться в папке src/tzfrs/Util в этом репозитории git?

Другими словами, я помещаю имя поставщика и основное пространство имен в структуру папок в мои проекты? Или я бы только поместил поднаменованные имена в файл?

В качестве примера: пусть говорят, что мой класс SimpleCurl не находится в пространстве имен tzfrs/Util/ но в пространстве имен tzfrs/Util/Curl

Должен ли я добавить пространство имен Curl в качестве папки в папку src, так как это имя поднабора?

Теги:
github
composer-php

1 ответ

1
Лучший ответ

Если ваша библиотека следует за PSR-4, это нормально, если SimpleCurl.php находится внутри "src", используя эту конфигурацию автозагрузки. Нет необходимости копировать пространство имен в виде структуры папок, что можно увидеть во многих библиотеках PSR-0, но PSR-0 устарел.

Если вы хотите иметь класс SimpleCurl в пространстве имен tzfrs\Util\Curl, вам нужно создать папку с именем Curl которая должна содержать ваш SimpleCurl.php. Все в src будет добавлено в ваш префикс, который вы определили как tzfrs\Util.

Взгляните на битву автопогрузчиков: PSR-0 и PSR-4.

  • 0
    Спасибо за ответ. Это очень помогает. Таким образом, в принципе, мы можем сказать: vendorname (tzfrs) и namespacename (util) не идут в папку src, subnamespacenames (Curl) делают! Это помогло!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню