Я написал класс cURL, который хотел разделить на github, а также сделать доступным через композитора. Я успешно разместил свою lib на github https://github.com/tzfrs/SimpleCurl, но у меня все еще есть проблемы с пониманием правильной структуры папок.
В настоящее время у меня это так:
"SimpleCurl"
src/
src/
есть файл SimpleCurl.php
который является классом SimpleCurl
SimpleCurl
однако, находится в пространстве имен tzfrs/Util/
"autoload": { "psr-4": { "tzfrs\\Util\\": "src/" } }
Теперь моя проблема в понимании: хорошо ли, что SimpleCurl.php
-file находится непосредственно в папке src/
? Или он должен находиться в папке src/tzfrs/Util
в этом репозитории git?
Другими словами, я помещаю имя поставщика и основное пространство имен в структуру папок в мои проекты? Или я бы только поместил поднаменованные имена в файл?
В качестве примера: пусть говорят, что мой класс SimpleCurl
не находится в пространстве имен tzfrs/Util/
но в пространстве имен tzfrs/Util/Curl
Должен ли я добавить пространство имен Curl
в качестве папки в папку src, так как это имя поднабора?
Если ваша библиотека следует за PSR-4, это нормально, если SimpleCurl.php находится внутри "src", используя эту конфигурацию автозагрузки. Нет необходимости копировать пространство имен в виде структуры папок, что можно увидеть во многих библиотеках PSR-0, но PSR-0 устарел.
Если вы хотите иметь класс SimpleCurl
в пространстве имен tzfrs\Util\Curl
, вам нужно создать папку с именем Curl
которая должна содержать ваш SimpleCurl.php
. Все в src
будет добавлено в ваш префикс, который вы определили как tzfrs\Util
.
Взгляните на битву автопогрузчиков: PSR-0 и PSR-4.