Я думаю, что самое простое решение в наши дни - это хранить ваши независимые модули в отдельных репозиториях, а затем запрашивать их с помощью composer .
Я покажу вам некоторый теоретический пример этого.
У меня есть проект, который должен использовать модуль оплаты.Платежный модуль представляет собой отдельный репозиторий с файлом composer.json
, предоставленным в корневом каталоге.
Например:
{
"name": "company/payment-module",
"description": "Module handling payments from our customers.",
"autoload": {
"psr-4": {
"Company\\PaymentModule\\": "src/"
}
}
}
, который дает вам возможность использовать любой из модулей, созданных в любом приложении / проекте, который выбуду строить.Так, например, в вашем проекте вы можете потребовать платежный модуль в качестве зависимости.
{
"name": "company/shop",
"type": "project",
"description": "The main repository of our shop.",
"autoload": {
"psr-4": {
"": "src/"
}
},
"repositories": [
{
"type": "git",
"url": "https://github.com/company/payment-module"
}
],
"require": {
"company/payment-module": "dev-master"
}
}
Когда вы определяете нужные модули в проекте и устанавливаете их с помощью composer, они будут находиться в каталоге vendor/
и будутавтоматически загружается в определяемые вами пространства имен.