Всем привет! Я никогда не использовал фреймворки, все проекты пишу сам (PHP) (конечно, со своими наработками и со своей удобной для меня структурой), поэтому мне сложно представить зачем нужен composer впринципе.
Я понимаю, что он скачает некие файлы, плагины и т.д. Но какой в этом смысл, если я не знаю куда он их скачал и что конкретно он скачал. И почему так важно пользоваться именно им... Ведь с таким же успехом можнос качать архив, без кучи лишних файлов с тем же плагином и закинуть его в папку вручную.
В целом в этом и весь вопрос: зачем скачивать кучу ненужных файлов, не зная как они располагаются и куда скачиваются, вместо ручного скачивания, где я просто скачаю пару нужных файлов и подключу их к проекту.
И вообще, нужен ли компоситор для самописных проектов?
Вопрос старый, но многие будут в поиске и найдут его актуальным. Composer, как и другие пакетные менеджеры, есть не более чем навязанная хайпом, и желанием ее мейнтейнеров взять всё под свой контроль, утилита, к которой вы намертво привязаны. Лишняя зависимость как от самой утилиты, так и от навязываемого ей "главного" репозитория (онлайн сервиса) packagist, который на секундочку, всего лишь бизнес.
Почти все проект уже поддались на это безумие, купились на удобство одной командой делать магию установки.
Есть и более веские причины не пользоваться композером, но это требует глубокого понимания принципов обратной совместимости, сопровождения, и т.д.
Отличный ответ. За эти годы, после того как был задан этот вопрос, я значительно продвинулся как разработчик и сейчас ответил бы точно так же, добавив, что кроме всего прочего все эти зависимости подтягивают буквально сотни и тысячи файлов в 99% случаев не нужного функционала. Одна единственная библиотека для реализации достаточно простого функционала подсадит вас на использование тысяч строк ненужного кода засирающего проект.
По факту, я стал использовать composer но только там, где это жизненно необходимо. В остальных случаях так и добавляю нужные (небольшие) библиотеки вручную и иногда выдирая из них ненужные 60% кода
Composer это общепринятый стандарт внедрения зависимостей и только.
Удобная форма, простота поддержки — все ради костылей и ускорения работы.
Удобно делится, публиковать и добавлять новое, не вникая как оно там работает под капотом.
И самое главное, в наш век говнокодинга - Composer сам обновит пакет если нужно. (Плюсы и минусы, победа над одним багом по цене добавления других багов)
В остальном же для локальных проектов, где не используются сторонние стандартные решения (авторский протокол обмена к примеру) средств php хватит с головой и выше.
Даже больше того скажу, 60% либ на php реализуют стандартные методы php с синтаксическим сахаром.
В разрезе Composer есть прекрасная функция spl_autoload_register у php. Буквально пару строчек кода и мы получим на выходе тот же уровень поддержки.
Причем не нужно будет каждый раз перезапускать какой-то внешний скрипт, что бы тебе подключило новые файлы.
Ой, сколько повидал я людей "у меня все велосипеды свои, родные, зачем мне что-то еще".
1. Поставить какой-то пакет в одну команду – самое очевидное. Не запариваться с архивами.
2. Обновление в одну команду. При том, если что-то пойдет не так, можно быстро откатиться.
3. Зависимости сторонних пакетов. Не придется иметь несколько копий одной и той же библиотеки.
4. Удобный встроенный автолоадер.
5. Удобство развертки. В репозитории хранится только ваш собственный код, который быстро деплоится на сервер, а там уже ставятся все необходимые зависимости.
1. Поставить какой-то пакет в одну команду – самое очевидное. Не запариваться с архивами.
И с трудом понимать чего оно там делает и что будет делать как только чудо-разработчики решат внедрить новые фишечки под капотом.
2. Обновление в одну команду. При том, если что-то пойдет не так, можно быстро откатиться.
Это не задачи, которые должен решать пакетный менеджер. Которого вообще не должно быть.
3. Зависимости сторонних пакетов. Не придется иметь несколько копий одной и той же библиотеки.
Нескольких копий и не будет, если самостоятельно ставить, соблюдая структуру каталогов.
4. Удобный встроенный автолоадер.
Опять - это не задача пакетного менеджера.
5. Удобство развертки. В репозитории хранится только ваш собственный код, который быстро деплоится на сервер, а там уже ставятся все необходимые зависимости.
Убрать сленговые словечки, и не останется ничего. Лучше простого копирования еще ничего не придумано.
Антон, Это не совсем то... Нельзя отрицать то, что подключая сотни библиотек для работы одной единственной проект усложняется а иногда и замедляет свою работу в разы. Для проектов которые должны быть реализованы ради скорости разработки - это идеальное решение, но проект которому важна производительность - решение так себе. Речь, конечно, скорее о пакетных менеджерах для JS но все же...
Composer - это инструмент управления зависимостями в PHP. Он позволяет вам декларировать библиотеки, от которых зависит ваш проект, и он будет управлять (устанавливать / обновлять) их для вас.
Конечно, Вы можете вручную все скачивать и устанавливать/обновлять, просто в один прекрасный день Вы подумаете "блин, какой же я был дурак..." и начнете использовать composer