Что PHP Composer предоставляет, а Git Submodules — нет?

Я работаю над проектом, который использует Composer (https://getcomposer.org/) для ссылки на различные библиотеки PHP.

Я также использую подмодули git (http://git-scm.com/docs/git-submodule) для ссылки на различные библиотеки JavaScript (где библиотеки указывают на определенные теги выпуска, например, «v1.2.34»).

Чтобы упростить проект, я рассматриваю возможность отказа от Composer в пользу использования только субмодулей, если только Composer не предоставляет функции, которых нет в Git Submodules. Так, Что PHP Composer обеспечивает, что Git Submodules не?

1

Решение

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

Для библиотек, в которых указана информация об автозагрузке, Composer генерирует vendor/autoload.php файл. Вы можете просто включить этот файл, и вы получите автозагрузку бесплатно.

require 'vendor/autoload.php';

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

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler(
'app.log',
Monolog\Logger::WARNING
));

$log->addWarning('Foo');

Вы даже можете добавить свой собственный код в автозагрузчик, добавив autoload поле для composer.json,

{
"autoload": {
"psr-4": {"Acme\\": "src/"}
}
}

Composer зарегистрирует автозагрузчик PSR-4 для Acme Пространство имен.

Как Джек указывает, Composer также обрабатывает зависимости. То есть, если вы хотите использовать библиотеку Xи это зависит от библиотек Y а также ZКомпозитор установит все три.

Композитор также поддерживает более гибкое управление версиями, например «использовать самую последнюю версию 1.2.x», и это де-факто стандартный инструмент при работе с современным PHP.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]