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

1

Я работаю над проектом, который использует 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 нет?

  • 2
    Они оба делают версионирование, но composer также автоматически обрабатывает зависимости версий (iirc).
  • 1
    Подмодули Git - ужасная боль в заднице, для начала.
Показать ещё 1 комментарий
Теги:
composer-php
git-submodules

1 ответ

3

Одной из причин прилипания к 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/"}
    }
}

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

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

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

Ещё вопросы

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