- Dependency management
- System Requirements
-
Installation — Linux / Unix / macOS
-
Downloading the Composer Executable
- Locally
- Globally
-
Downloading the Composer Executable
-
Installation — Windows
- Using the Installer
- Manual Installation
- Docker Image
- Using Composer
Composer is a tool for dependency management in PHP. It allows you to declare
the libraries your project depends on and it will manage (install/update) them
for you.
Dependency management#
Composer is not a package manager in the same sense as Yum or Apt are. Yes,
it deals with «packages» or libraries, but it manages them on a per-project
basis, installing them in a directory (e.g. vendor
) inside your project. By
default, it does not install anything globally. Thus, it is a dependency
manager. It does however support a «global» project for convenience via the
global command.
This idea is not new and Composer is strongly inspired by node’s
npm and ruby’s bundler.
Suppose:
- You have a project that depends on a number of libraries.
- Some of those libraries depend on other libraries.
Composer:
- Enables you to declare the libraries you depend on.
- Finds out which versions of which packages can and need to be installed, and
installs them (meaning it downloads them into your project). - You can update all your dependencies in one command.
See the Basic usage chapter for more details on declaring
dependencies.
System Requirements#
Composer in its latest version requires PHP 7.2.5 to run. A long-term-support
version (2.2.x) still offers support for PHP 5.3.2+ in case you are stuck with
a legacy PHP version. A few sensitive php settings and compile flags are also
required, but when using the installer you will be warned about any
incompatibilities.
Composer needs several supporting applications to work effectively, making the
process of handling package dependencies more efficient. For decompressing
files, Composer relies on tools like 7z
(or 7zz
), gzip
, tar
, unrar
,
unzip
and xz
. As for version control systems, Composer integrates seamlessly
with Fossil, Git, Mercurial, Perforce and Subversion, thereby ensuring the
application’s smooth operation and management of library repositories. Before
using Composer, ensure that these dependencies are correctly installed on your
system.
Composer is multi-platform and we strive to make it run equally well on Windows,
Linux and macOS.
Installation — Linux / Unix / macOS#
Downloading the Composer Executable#
Composer offers a convenient installer that you can execute directly from the
command line. Feel free to download this file
or review it on GitHub
if you wish to know more about the inner workings of the installer. The source
is plain PHP.
There are, in short, two ways to install Composer. Locally as part of your
project, or globally as a system wide executable.
Locally#
To install Composer locally, run the installer in your project directory. See
the Download page for instructions.
The installer will check a few PHP settings and then download composer.phar
to your working directory. This file is the Composer binary. It is a PHAR
(PHP archive), which is an archive format for PHP which can be run on
the command line, amongst other things.
Now run php composer.phar
in order to run Composer.
You can install Composer to a specific directory by using the --install-dir
option and additionally (re)name it as well using the --filename
option. When
running the installer when following
the Download page instructions add the
following parameters:
php composer-setup.php --install-dir=bin --filename=composer
Now run php bin/composer
in order to run Composer.
Globally#
You can place the Composer PHAR anywhere you wish. If you put it in a directory
that is part of your PATH
, you can access it globally. On Unix systems you
can even make it executable and invoke it without directly using the php
interpreter.
After running the installer following the Download page instructions
you can run this to move composer.phar to a directory that is in your path:
mv composer.phar /usr/local/bin/composer
If you like to install it only for your user and avoid requiring root permissions,
you can use ~/.local/bin
instead which is available by default on some
Linux distributions.
Note: If the above fails due to permissions, you may need to run it again
withsudo
.Note: On some versions of macOS the
/usr
directory does not exist by
default. If you receive the error «/usr/local/bin/composer: No such file or
directory» then you must create the directory manually before proceeding:
mkdir -p /usr/local/bin
.Note: For information on changing your PATH, please read the
Wikipedia article and/or use
your search engine of choice.
Now run composer
in order to run Composer instead of php composer.phar
.
Installation — Windows#
Using the Installer#
This is the easiest way to get Composer set up on your machine.
Download and run
Composer-Setup.exe. It will
install the latest Composer version and set up your PATH so that you can
call composer
from any directory in your command line.
Note: Close your current terminal. Test usage with a new terminal: This is
important since the PATH only gets loaded when the terminal starts.
Manual Installation#
Change to a directory on your PATH
and run the installer following
the Download page instructions
to download composer.phar
.
Create a new composer.bat
file alongside composer.phar
:
Using cmd.exe:
C:\bin> echo @php "%~dp0composer.phar" %*>composer.bat
Using PowerShell:
PS C:\bin> Set-Content composer.bat '@php "%~dp0composer.phar" %*'
Add the directory to your PATH environment variable if it isn’t already.
For information on changing your PATH variable, please see
this article and/or
use your search engine of choice.
Close your current terminal. Test usage with a new terminal:
C:\Users\username>composer -V
Composer version 2.4.0 2022-08-16 16:10:48
Docker Image#
Composer is published as Docker container in a few places, see the list in the composer/docker README.
Example usage:
docker pull composer/composer
docker run --rm -it -v "$(pwd):/app" composer/composer install
To add Composer to an existing Dockerfile you can simply copy binary file from pre-built, low-size images:
# Latest release
COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
# Specific release
COPY --from=composer/composer:2-bin /composer /usr/bin/composer
Read the image description for further usage information.
Note: Docker specific issues should be filed on the composer/docker repository.
Note: You may also use composer
instead of composer/composer
as image name above. It is shorter and is a Docker official image but is not published directly by us and thus usually receives new releases with a delay of a few days. Important: short-aliased images don’t have binary-only equivalents, so for COPY --from
approach it’s better to use composer/composer
ones.
Using Composer#
Now that you’ve installed Composer, you are ready to use it! Head on over to the
next chapter for a short demonstration.
Basic usage →
Found a typo? Something is wrong in this documentation?
Fork and edit it!
#статьи
-
0
Подробный гайд по установке, автозагрузке и основным командам.
Иллюстрация: Катя Павловская для Skillbox Media
Пишет об истории IT, разработке и советской кибернетике. Знает Python, JavaScript и немного C++, но предпочитает писать на русском.
В проектах на PHP, будь то простые сайты, блоги или крупные системы с сотнями микросервисов, часто используется сторонний код. Например, библиотеки для формирования HTTP-запросов, работы с видео и изображениями, геолокацией и так далее. Это ускоряет разработку приложения и позволяет разработчикам не тратить время на задачи, которые уже решили другие программисты.
Несмотря на множество очевидных преимуществ, у такого подхода есть свои проблемы: часто сторонний код тоже использует функции других библиотек, и для безопасной разработки нужно быть уверенным в том, что эти библиотеки установлены на вашем компьютере. В мире PHP с этим (и не только) помогает утилита Composer, о которой и поговорим далее.
Содержание
- Что такое Composer
- Как установить Composer
- Синтаксис composer.json
- Основные команды Composer
Composer — это бесплатная программа, которая позволяет легко устанавливать, удалять и обновлять зависимости в проектах на PHP.
Зависимости — это любые внешние компоненты, которые используются в проекте: библиотеки, фреймворки, базы данных, CMS и так далее. Например, если вам нужно внедрить в проект функцию для хеширования паролей, можно не писать её с нуля, а использовать библиотеку — то есть добавить в проект зависимость.
Проблема в том, что по мере роста числа зависимостей работать с ними становится всё сложнее. Например, чтобы обновить библиотеку, вам придётся идти на сайт разработчика, скачивать архив и подключать его в проект. А если после обновления изменится сигнатура функций библиотеки или структура пространств имён, то проект и вовсе «рассыпется». Придётся исследовать исходный код и переписывать модули, в которых задействованы проблемные функции.
Поэтому разработчики используют менеджеры зависимостей, к коим и относится Composer.
Менеджер зависимостей решает следующие задачи:
- Скачивает зависимости из центрального репозитория и других источников (опционально).
- Формирует список зависимостей, необходимых для работы проекта.
- Обновляет их.
- Фиксирует стабильные версии библиотек и фреймворков, спасая разработчиков от неожиданной поломки проекта после обновления.
- Упрощает автозагрузку классов.
Если вы уже работали с другими языками программирования, такими как JavaScript, Python или Ruby, то наверняка пользовались пакетными менеджерами NPM, PIP или RubyGems. Composer выполняет аналогичные функции в экосистеме PHP.
Теперь коротко по каждому пункту.
Конечно, никто не запрещает скачивать пакеты командой git clone <имя_пакета> из GitHub. Однако этот способ влечёт за собой серьёзные проблемы, о которых мы поговорим чуть ниже.
До Composer для этих целей использовали другой репозиторий и одноимённый менеджер — PEAR (PHP Extension and Application Repository). Но у PEAR был ряд недостатков:
- все пакеты устанавливались глобально, то есть нельзя было использовать разные версии для разных проектов;
- каждый класс должен был решать уникальную задачу, из-за чего было практически невозможно добавлять альтернативные решения;
- чтобы пакет попал в PEAR, он должен был набрать достаточное количество голосов в сообществе.
К началу 2010-х PEAR перестал удовлетворять потребности PHP-разработчиков и в сообществе встал вопрос о новом менеджере зависимостей.
Появившийся в 2012 году Composer решал обозначенные проблемы. Он устанавливает пакеты на уровне проекта (в папку vendor) и позволяет поставщикам свободно добавлять библиотеки в репозиторий. По умолчанию Composer получает пакеты из центрального хранилища пакетов Packagist, но вы можете указать и другие источники в файле конфигурации.
Управление зависимостями не сводится к одному лишь скачиванию необходимого кода. Нельзя просто клонировать репозиторий в папку libs и подключить его. Практически у каждого пакета есть свой ряд зависимостей, у которых, в свою очередь, есть свой и так далее. Распутывать этот клубок довольно утомительно.
Рассмотрим проблему на примере популярной библиотеки Guzzle для отправки HTTP-запросов.
Клонируем репозиторий в папку проекта:
git clone https://github.com/guzzle/guzzle.git
Теперь у нас есть папка guzzle с исходниками и служебными файлами, но пользы от неё пока мало. При попытке инициализировать объект класса Client PHP ругается, что не нашёл некоторые классы:
require_once "guzzle/src/Client.php"; $newGuzzle = new \GuzzleHttp\Client();
Вывод:
Fatal error: Trait "GuzzleHttp\ClientTrait" not found in D:\xampp\htdocs\project_without_composer\guzzle\src\Client.php on line 17
Можно подключить их напрямую командой require или зарегистрировать автозагрузчик, но это поможет отыскать лишь классы, которые шли в пакете guzzle:
function guzzleAutoloader($classname) { $classnameGroup = explode('\\', $classname); $directories = ['', 'Cookie/', 'Exception/', 'Handler/']; foreach ($directories as $directory) { $filename = __DIR__ . "/guzzle/src/{$directory}" . end($classnameGroup) . ".php"; if(file_exists($filename)) { require_once($filename); } } } spl_autoload_register('guzzleAutoloader');
Вывод:
PHP Fatal error: Uncaught Error: Interface "Psr\Http\Client\ClientInterface" not found in D:\xampp\htdocs\project_without_composer\guzzle\src\Client.php:17
Psr\Http\Client\ClientInterface и прочие классы придётся устанавливать отдельно. Полный их список можно найти в секции require файла guzzle/composer.json.
Без Composer мы бы вручную устанавливали каждый компонент и писали для них автозагрузчики, пока интерпретатор не перестал бы «ругаться». C Composer достаточно такой команды:
composer require <полное_имя_пакета>
Эта команда пройдётся по дереву зависимостей и сама всё установит.
Почти все современные PHP-проекты на GitHub содержат файл composer.json, в котором хранится список зависимостей вместе с информацией об их версиях. Если файл составлен корректно, то вам даже не нужно знать названия компонентов: достаточно ввести команду composer install, и умница-менеджер сделает всё за вас.
Подробнее о composer.json читайте в разделе «Синтаксис composer.json».
Неизменный спутник composer.json — его тёзка composer.lock. Из-за схожих названий и синтаксиса их часто путают, но на самом деле оба файла незаменимы и выполняют чётко определённые задачи. Если в composer.json перечислены зависимости и их минимальные версии, то composer.lock содержит информацию о точных версиях зависимостей, которые использовались во время разработки и тестирования.
Слово lock в расширении появилось не случайно: файл будет блокировать попытки обновить библиотеки до более свежих версий, чем те, что в нём указаны. Таким образом, например, можно гарантировать одинаковые условия для всех разработчиков в проекте.
Composer упрощает подключение файлов благодаря собственному универсальному автозагрузчику. С ним можно почти забыть о директивах include и require — достаточно подключить файл vendor/autoload.php, после чего любой класс, именованный в соответствии с PSR-4, будет подключаться только тогда и в том месте, где это потребуется.
Composer можно установить глобально или локально. В первом случае менеджер будет доступен для работы из любого каталога; при локальной установке — только из папки, которую вы выберете.
Ниже приведены самые доступные и простые способы установки для трёх основных операционных систем: Windows, macOS и Linux.
Важно!
Composer — это набор скриптов на PHP, поэтому перед установкой убедитесь, что на вашем компьютере установлен PHP.
Самый простой способ — скачать, запустить исполняемый файл Composer-Setup.exe с официального сайта и следовать указаниям установщика. Экзешник сам добавит путь к Composer в переменную PATH, открыв к нему глобальный доступ.
Порядок установки:
- Перейдите на официальный сайт Composer и скачайте установщик, нажав на кнопку Composer-Setup.exe. Запустите его.
- Следуйте инструкциям установщика. Укажите путь к PHP, если он не обнаруживается автоматически (например, D:\xampp\php\php.exe в XAMPP). Завершите установку, нажав Install.
- Проверьте установку. Откройте командную строку (нажмите Win + R, введите cmd и нажмите Enter). Введите команду composer и убедитесь, что выводится текст, подтверждающий успешную установку:
Второй способ — ручной, через командную строку (cmd.exe) или PowerShell. С его описанием вы можете ознакомиться в официальной документации.
1. Откройте терминал и обновите список пакетов:
sudo apt update
2. Убедитесь, что на вашей машине установлены расширения, необходимые для корректной работы Composer:
sudo apt install curl php-cli php-mbstring git unzip
3. Установите программу с помощью утилиты install:
sudo apt install composer
4. Проверьте установку командой composer. В случае успеха терминал вернёт следующий текст:
В macOS самый простой и предпочтительный способ установки — с помощью утилиты Homebrew:
- Убедитесь, что Homebrew установлен на вашем компьютере. Для этого откройте терминал и введите команду brew -v. Если Homebrew не установлен, сделайте это по инструкции с официального сайта.
- Установите Composer командой brew install composer.
- Проверьте установку: введите в терминале команду composer и убедитесь, что выводится текст, подтверждающий успешную установку.
В composer.json описаны зависимости проекта в формате JSON. Как уже было сказано ранее, он позволяет одной командой установить все необходимые сторонние компоненты.
Файл хранит следующую информацию:
- списки зависимостей для продакшена и разработки;
- директории, в которых автозагрузчик будет искать классы;
- справочная информация (имя и тип проекта, описание, ключевые слова, лицензия);
- конфигурации Composer.
Содержимое файла представляет собой простой JSON-объект с ключами и значениями:
{ "name": "laravel/laravel", "type": "project", "description": "The skeleton application for the Laravel framework.", "keywords": ["laravel", "framework"], "license": "MIT", "require": { "php": "^8.2", "doctrine/dbal": "^4.0", "guzzlehttp/guzzle": "^7.8", "laravel/framework": "^11.9", "laravel/tinker": "^2.9", "spatie/laravel-html": "^3.11" }, "require-dev": { "fakerphp/faker": "^1.23", "laravel/pint": "^1.13", "laravel/sail": "^1.26", "mockery/mockery": "^1.6", "nunomaduro/collision": "^8.0", "phpunit/phpunit": "^11.0.1" }, "autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" }, "files": [ "app/Helpers/helpers.php" ] } }
Ключи в JSON всегда берутся в кавычки, а значениями могут быть как числа, булевы значения, сроки и массивы, так и вложенные объекты. За более подробным описанием JSON приглашаем в нашу статью об этом формате.
Как правило, файл не нужно создавать самостоятельно: он сам появится после первого запуска команды require. Но если вы планируете разместить код в публичном репозитории, например Packagist, то придётся вручную добавить справочную информацию и настройки автозагрузчика.
Теперь познакомимся с некоторыми свойствами.
name — имя пакета. Оно состоит из имени вендора и имени пакета, разделёнными прямым слешем /. Именно его пользователи будут вызывать при установке, поэтому для публичных проектов параметр необходим.
type — тип пакета, по умолчанию принято ставить library («библиотека»). Поле используется для определения порядка установки и развёртывания пакета. Например, файлы из library будут скопированы в папку vendor, а пакет metapackage не содержит никаких файлов, зато вызовет установку других пакетов, содержащихся в графе require.
description — короткое описание проекта (обязательно для публичных пакетов).
keywords — массив ключевых слов, по которым можно найти пакет командой composer search.
require — тот самый список зависимостей. В примере выше (это реальный composer.json проекта на Laravel) рядом с каждой версией стоит знак каретки ^, который ограничивает мажорную версию. Это значит, что при работе над проектом лучше ограничиться PHP v8, Laravel v11, PHPUnit v11 и так далее.
Другие символы версионирования в Composer:
- <, >, <=, >= и ! = — диапазон версий, например >=1.1.0<=1.1.8;
- — — диапазон версий через дефис, например 1.1.0-1.18;
- * — подстановка, например 1.1.*;
- ~ — последний разряд должен быть равен или больше указанного. Например, ~1.1.3 эквивалентен >=1.1.3<1.2.
autoload — список директорий, в которых автозагрузчик будет искать классы.
Composer предоставляет четыре метода автозагрузки:
- Файловый — файлы подключаются целиком, по аналогии с require и include. Полезно, когда нужно подключить наборы функций.
- Карты классов — Composer получает список директорий, составляет список классов, которые в них хранятся, и автоматически загружает их при необходимости.
- PSR-0 — каждому пространству имён в соответствие ставится директория (пара «ключ — значение»), при этом структура папок должна воспроизводить структуру пространства имён. Например, если класс LoginController находится в пространстве App\Http\Controllers, то файл LoginController.php должен лежать в папке App\Http\Controllers.
- PSR-4 — то же, что и PSR-0, но структура папок не должна имитировать структуру пространств имён.
Для каждого из методов есть своя секция в разделе autoload: files, classmap, psr-0 и psr-4. Чаще всего вы будете работать с psr-4 — современным стандартом автозагрузки в PHP — и чуть реже с files.
Теперь, когда вы знакомы с устройством Composer, пришло время узнать его основные команды.
Пожалуй, самая популярная задача, которую разработчики решают с помощью Composer, — установка библиотек и фреймворков. Для этого есть команда require:
composer require <имя_пакета>
Сразу возникает вопрос: а как узнать точное имя искомого пакета? Кратчайший путь лежит через поисковики: гуглим или яндексим библиотеку, копируем название с официального сайта или из README на GitHub и передаём команде require.
Скриншот: Guzzle / GitHub
Жмём Enter — и вуаля! Composer начинает установку зависимостей, о чём станет понятно по череде сообщений оптимистичного зелёного цвета в терминале. Если установка прошла без проблем, Composer покажет версию установленного пакета.
Обычно в корневой папке PHP-проектов на GitHub лежит файл composer.json со списком необходимых пакетов (о нём мы говорили выше). С помощью этого файла можно установить все зависимости одной командой:
composer install
После выполнения команды в корневой директории появится папка vendor с файлами зависимостей и автозагрузчиком autoload.php.
В 99% случаев установка проходит без сучка и задоринки. Проблемы могут доставить пакеты, которые используют функции отсутствующих расширений. Composer сообщит о них в отчёте:
league/flysystem-local 3.28.0 requires ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.
Обычно проблема решается банальным раскомментированием соответствующей строки в php.ini. Но даже если расширения нет в списке — не страшно: его можно скачать в виде файла в формате .dll (в Windows) или .so (в Linux), скопировать в папку с расширениями (точный путь зависит от операционной системы и версии PHP) и прописать название файла в php.ini.
Обновить все зависимости в проекте можно с помощью команды:
composer update
Для обновления конкретной зависимости укажите её имя:
composer update <vendor-name/project-name>
У Composer обновления тоже выходят регулярно. Чтобы обновиться до последней версии, используйте следующую команду:
composer self-update
Для установки последней стабильной версии добавьте флаг — stable.
Команда remove удаляет пакет из проекта:
composer remove <vendor-name/project-name>
После выполнения пакет исчезнет из папки vendor и разделов require и require-dev файла composer.json.
Чтобы composer отработал установку пакетов так, как вы этого ожидаете, файл composer.json должен быть составлен корректно.
Для этого есть команда:
composer validate
Если файл составлен корректно, вы увидите следующее сообщение:
./composer.json is valid
В противном случае Composer укажет на ошибки:
./composer.json is valid for simple usage with Composer but has strict errors that make it unable to be published as a package See https://getcomposer.org/doc/04-schema.md for details on the schema # Publish errors - description : The property description is required
В этом примере файл вполне пригоден для использования. Но если мы захотим разместить проект в центральном репозитории Packagist, то он не пройдёт проверку, потому что в composer.json нет поля description.
Мы познакомились с основами Composer — незаменимого помощника в установке, обновлении и управлении зависимостями в проектах на языке PHP. Мы узнали, как его установить, что такое composer.json и composer.lock, как правильно «готовить» эти файлы и решить некоторые распространённые проблемы, связанные с развёртыванием приложений на их основе.
Сегодня Composer используется практически везде, поэтому бэкенд-разработчику полезно знать не только основные команды, но и принципы, по которым Composer управляет зависимостями в проектах.
Бесплатный курс по Python ➞
Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе.
Смотреть программу
Last Updated :
11 Sep, 2024
Composer is essentially a package manager for PHP. You can effectively manage libraries and packages in your PHP projects by using Composer, a dependency management for PHP. Composer makes package management easier for both small and large-scale applications by automating the installation and update of dependencies. A package manager is, it allows anyone to import codebases into the project & keep them up to date. It just helps you to manage those dependencies.
In this article, we will look into the process of installing a composer on a Windows system.
Prerequisites
Make sure your machine satisfies the following prerequisites before you start:
- Windows 10 or later: Although the instructions are specific to Windows 10, they should also apply to earlier versions of the OS.
- PHP: Installing PHP on your computer is necessary for Composer to work. Installing PHP is required if it isn’t already installed before continuing.
Installation of PHP composer on Windows:
Follow the below steps to install PHP composer on a Windows system:
Step 1: Navigate to the official composer website.
Step 2: Then click on the Download button.
Step 3: Then click on the Composer-Setup.exe & download the file.
Step 4: Then click on «Install for all users».
Step 5: Do not make any changes & click Next
Step 6: First, you have to install PHP on your computer. You can see the installation location here. Click Next.
Step 7: Do not make any changes & click Next.
Step 8: Do not make any changes & click Install.
Step 9: Wait for the installation.
Step 10: Do not make any changes, just leave it & click Next.
Step 11: Click Finish, Composer is installed successfully.
Step 12: Open the command prompt & execute the below command :
composer
Hence you can see all the details & your installation is successful.
Conclusion
PHP Composer is a very simple tool for managing dependencies in PHP projects; it’s easy to install, update, and manage packages with Composer, which makes your development process more organized and productive. Installing PHP Composer on Windows is a simple process.
Also Read
- How to install PHP in windows 10
- How to Install PHP Composer on cPanel?
- How to Install and use PHP Composer on Linux?
В этой статье рассмотрим, что такое Composer, как его установить и использовать. Другими словами, разберем как его «готовить» для начинающих.
Что такое PHP Composer
Composer – это пакетный менеджер зависимостей, предназначенный для упрощения загрузки и установки сторонних php библиотек в проект. Например, с помощью него можно очень просто добавить в разрабатываемый проект php пакеты, а также развернуть другие проекты, которые распространяются вместе с файлом «composer.json».
«composer.json» — это текстовый файл, в котором в формате JSON описаны все сторонние пакеты от которых зависит данный проект.
Например, для того чтобы в некоторый разрабатываемый проект добавить сторонние библиотеки, в нём можно просто создать «composer.json» и описать в этом файле все необходимые зависимости. После этого для установки всех требуемых внешних php пакетов в проект достаточно будет ввести в консоли всего одну команду (composer install
).
Другой вариант заключается в применении команды require. В этом случае самостоятельно создавать файл «composer.json» не нужно. composer require
– это команда для установки php пакетов в проект посредством Composer. Кроме установки данная команда также автоматически его пропишет в файл «composer.json». В дальнейшем для того, чтобы скопировать этот проект, например на другой компьютер, вам не нужно будет переносить туда все внешние пакеты, достаточно будет переместить туда только файл «composer.json». Установка всех зависимостей на этом компьютере будет осуществляться уже посредством ввода всего одной команды (composer install
).
При использовании команды require, она ещё выполняет создание файла «composer.json», если его ещё в нет проекте.
Кроме этого, Composer применяется не только для установки php библиотек. С помощью Composer осуществляется также установка различных php фреймворков (Laravel, Yii2, Symfony и др.) и CMS (Drupal, MODX 3 и др.).
Composer представляет собой обычный php скрипт, т.е. программу, написанную на языке php.
Основная цель этой программы заключается в том, чтобы предоставить веб-разработчику удобный инструмент, с помощью которого он сможет очень просто загружать и устанавливать пакеты в проект, их обновлять, а также при необходимости осуществлять их удаление. Все эти действия Composer позволяет выполнить с помощью ввода всего одной или нескольких команд. Удобно, не правда ли?
В качестве репозитория пакетов Composer по умолчанию использует packagist.org.
При установке php пакетов Composer не просто устанавливает их, он также устанавливает все зависимости, от которых эти пакеты зависят. Т.е., например, если загружаемая библиотека будет зависеть от 3 других пакетов, а каждая из них, ещё в свою очередь от нескольких и так далее, то Composer всё это установит автоматически. В противном случае, т.е. без использования Composer, загрузку и установку основных пакетов, а также всех зависимостей придётся выполнять самостоятельно.
Загрузку сторонних библиотек Composer выполняет в папку «vendor», которую данный php скрипт создаёт в корневой директории проекта. Кроме этого, он ещё создаёт специальный файл «autoload.php», включив который в проект вы сразу же подключите к нему все ранее загруженные им библиотеки.
require "path/to/vendor/autoload.php";
Дополнительно при загрузке сторонних библиотек Composer генерирует ещё файл «composer.lock». Если «composer.json» — это главный файл Composer, в котором содержится описание основных пакетов, включая требования к их версиям, то «composer.lock» — это файл, содержащий уже не требования, а реальные версии пакетов, которые им были установлены на компьютер пользователя.
Основное назначение файла «composer.lock» заключается в полном сохранении среды, в которой осуществлялась разработка и тестирование проекта.
Например, если вы захотите скопировать проект в какое-то другое место без переноса файла «composer.lock», то выполнив в нём команду composer install
, вы можете получить другие версии пакетов. Эта может случиться из-за выхода новых версий как основных пакетов, описанных в файле «composer.json», так и их зависимостей, зависимостей их зависимостей и т.д. Например, представим что выход новых версий основных пакетов не произошёл, но обновились версии у пакетов, от которых зависят основные пакеты. В результате установки работающего проекта, можем получить неработоспособный, если в какой-нибудь новой версии одного из этих пакетов была допущена ошибка. Поэтому если вы хотите сохранить полностью среду, то при копировании проекта необходимо дополнительно включать в проект файл «composer.lock».
Например, разворачивая проект на production, включающий в себя файл «composer.lock», вы получите те же версии зависимостей, которые у вас были при разработке и тестировании.
Работа с Composer осуществляется в основном в консольном или терминальном режиме, т.е. с помощью ввода команд через командную строку.
Официальный сайт Composer расположен по адресу https://getcomposer.org
Если вы использовали npm, то Сomposer – это нечто подобное, только не для «node.js», а для php.
Как установить Composer
Установка Composer может выполняться по-разному. Она также зависит от используемой среды и операционной системы. Рассмотрим различные варианты.
Установка Composer в Ubuntu, выполняющейся в подсистеме Windows для Linux (WSL)
Как установить локальный веб-сервер для разработки php проектов на подсистему Windows для Linux в Windows 10 можете ознакомиться в этой статье.
Для установки Composer в Windows 10 на подсистему Windows для Linux (WSL) необходимо выполнить следующие команды:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo php composer-setup.php
php -r "unlink ('composer-setup.php');"
Первая команда выполняет загрузку скрипта установщика с сайта «getcomposer.org». Вторая команда выполняет запуск этого установщика. В процессе своей работы установщик проверит некоторые настройки «php.ini», предупредит вас, если они установлены неправильно, а затем загрузит последний «composer.phar» в текущий каталог. Последняя или третья команда просто удалит загруженный установщик, который ранее использовался для установки Composer.
Phar — это исполняемые файлы (программы), которые выполняются посредством php интерпретатора.
Если при установке php пакетов у вас выводиться ошибки на отсутствие прав записи в каталог «~/.composer/cache», то в командной строке просто запустите данную команду:
sudo chmod -R a+rw ~/.composer/cache
Для установки Composer глобально, т.е. чтобы он был доступен с помощью команды composer
необходимо дополнительно выполнить ещё следующую команду:
mv composer.phar /usr/local/bin/composer
Эта команда переместит файл «composer.phar» из директории пользователя в директорию «/usr/local/bin» и уберёт у него расширение «phar».
Установка Composer на OpenServer (в Windows)
В OpenServer по умолчанию уже установлен Composer. Находится он в зависимости от выбранной версии PHP (устанавливается в настройках OpenServer) в директории «OSPanelmodulesPHP_*».
Работа с Composer в OpenServer по умолчанию осуществляется в собственной консоли. Для того чтобы открыть эту консоль необходимо нажать на значок Open Server правой кнопкой мыши в области уведомлений и в открывшемся контекстном меню найти соответствующий пункт.
В консоли для проверки того, что Composer подключен, например, можно ввести команду:
composer
Эта команда также отобразит версию Composer.
Если при выполнении этой команды отобразится сообщение, что версия Composer устарела, то её можно обновить. Осуществляется это посредством выполнения следующей команды:
composer self-update
Установка Composer на хостинг
Для установки Composer на хостинг, можно просто скачать данную программу самостоятельно, а затем загрузить её в корневую директорию проекта, например, с помощью FTP.
Самостоятельная загрузка нужной версии Composer выполняется со страницы «Download». Версии программы на данной странице расположены в разделе «Manual Download».
Выполнение команд на удалённом сервере обычно осуществляют с помощью SSH. По умолчанию на shared хостингах данный сетевой протокол выключен. Для его включения необходимо найти соответствующий пункт в панели управления, открыть его и нажать в нем на кнопку «Включить SSH».
Если вы пользователь Windows 10, то клиент SSH включен в систему по умолчанию. Поэтому для выполнения команд на удаленном сервере, можно в этой версии Windows не устанавливать никакой дополнительный софт, а например, воспользоваться программой «Командная строка» или «Windows PowerShell».
Например:
ssh -l логин ip_адрес_сервера
cd public_html/blog
php7.1 composer.phar -v
Основные команды Composer
Разберем основные команды Composer для начинающих.
Если вы используете «composer.phar» локально, то приведённые команды необходимо соответственно изменить в зависимости от того как настроено ваше окружение.
Например, если файл «composer.phar» находится в текущем каталоге и интерпретатор php доступен без указания пути к нему, то установка пакета будет осуществляться так:
php composer.phar require vendor/package
Установка пакета
Установка пакета через Composer осуществляется посредством выполнения следующей команды:
composer require vendor/package
vendor — это имя поставщика php пакета, а package — это его название.
Например, добавление в проект пакета twig через composer будет осуществляться так:
composer require "twig/twig:^2.0"
Команда require не только загрузит требуемую библиотеку в проект, но и пропишет её ещё в файле «composer.json», т.е. обновит его. Если устанавливаемый пакет зависит от других библиотек, то они также будут установлены или обновлены. Кроме этого ещё будет обновлён файл «composer.lock».
Установка всех пакетов в проект
Установка сразу всех пакетов в проект осуществляется посредством команды:
composer install
Эта команда работает следующим образом:
- проверяет, имеется ли файл «composer.lock»;
- если файл «composer.lock» существует, то устанавливает версии, указанные в нём;
- если файла «composer.lock» нет, то разрешает зависимости, описанные в файле «composer.json», создаёт файл «composer.lock» и устанавливает зависимости.
Обновление зависимостей
Команда для обновления установленных библиотек:
composer update
Эта команда обновит все зависимости установленные в проекте до последних версий (в соответствии с «composer.json») и файл «composer.lock».
Если необходимо обновить не все пакеты, а один или несколько, то их необходимо перечислить через пробел.
Команда для обновления одной библиотеки:
composer update vendor/package
Удаление пакета
Команда Composer для удаления пакета из проекта:
composer remove vendor/package
Для удаления одновременно нескольких пакетов можете их перечислить через пробел:
composer remove vendor/package vendor2/package2
Обновление Composer
Команда для обновления Сomposer до последней версии:
composer self-update
Обновление lock файла без обновления пакетов
Для обновления файла «composer.lock» без обновления самих пакетов:
composer update --lock
Создать новый проект
Создание нового проекта из указанного пакета в текущую директорию выполняется так:
composer create-project vendor/package
Создание нового проекта в указанную директорию выполняется так:
composer create-project vendor/package folder
Вывод всех установленных библиотек
Команда для отображения всех установленных php пакетов:
composer show
Проверка валидности файла «composer.json»
Команда с помощью которой можно проверить валидность файла «composer.json»:
composer validate
Вывод списка всех доступных команд
Вывести на экран все доступные команды Composer можно так:
composer list
Очистка внутреннего кэша пакетов Composer
Выполнение очистки внутреннего кэша пакетов Composer осуществляется с помощью команды:
composer clear-cache
Получение подробной справки по команде
Вывод подробной справки по команде:
composer help имя_команды
Например, вывести подробную инструкцию по использованию команды require можно следующим образом:
composer help require
Вывести зависимости для указанного пакета
Вывести все зависимости указанного пакета от других можно с помощью команды:
composer depends vendor/package
Создание базового варианта файла composer.json с помощью мастера
Создание базового варианта файла composer.json с помощью мастера, т.е. посредством ответов на вопросы:
composer init
Примеры использования Composer для установки PHP фреймворков и CMS
Установка фреймворка Laravel в текущую директорию осуществляется через Composer посредством ввода следующей команды:
composer create-project --prefer-dist laravel/laravel
Установка последней версии фреймворка Yii2 через Composer:
composer create-project --prefer-dist yiisoft/yii2-app-basic
Установка разрабатываемой версии MODX Revolution 3 через Composer:
composer create-project modx/revolution www 3.x-dev
Установка через Composer нового приложения Symfony, предназначенного для создания традиционных веб-приложений:
composer create-project symfony/website-skeleton
Установка Symfony для использования его для создания микросервисов, консольных приложений или API осуществляется так:
composer create-project symfony/skeleton
Установка Drupal через Composer:
composer create-project drupal-composer/drupal-project:8.x-dev --no-interaction
Как удалить Composer
Composer — это файл. В большинстве случаев для удаления его достаточно просто удалить.
Если вы не помните куда был установлен Composer, то просто поищете, например, с помощью встроенной системы поиска операционной системы этот файл.
Но так удалять не всегда корректно, все зависит от того, как вы его устанавливали. Если у инструмента, с помощью которого вы его устанавливали, есть возможность и его удаление, то выполняйте это действие с помощью этого инструмента.
Например, если вы Composer устанавливали с помощью инструмента apt-get, то и используйте его для удаления этой программы.
sudo apt-get remove composer
Например, если вы устанавливали Сopmoser в Windows с помощью программы Composer-Setup.exe, то удаления программы выполняйте стандартным образом через «Приложения и возможности» (только в Windows 10) или через «Удаление или изменение программы».
Дополнительно можно удалить папку с внутренним кэшем Composer. В Linux эта папка расположена в «/home//.composer», в Windows – «C:Users\AppDataRoamingComposer».
В данной статье разберем как установить и создать первый проект на для различных версий Symfony и Composer
В начале стоит убедиться что у вас уже установлен php требуемой для ваших задач версии. Для этого откройте командную строку (в моем случае git bash) и напишите команду:
$ php --version
После чего у вас появится сообщения типа:
PHP 7.4.30 (cli) (built: Jun 7 2022 15:36:03) ( NTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
Если же у вас не установлен php, то стоит посмотреть данный гайд.
Composer
Установить composer можно несколькими способами, но самым простым и понятным является установка через Windows инсталлятор. Для этого заходим на официальный сайт и нажимаем кнопку download.
После чего нажимаем на Composer-Setup.exe.
После чего просто запускаем exe файл и производим установку. По завершению установки снова открываем командную строку и пишем composer. У вас должна появиться следующая картинка.
$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.10.10 2020-08-03 11:35:19
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
-d, --working-dir=WORKING-DIR If specified, use the given directory as workin g directory.
--no-cache Prevent use of the cache
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for norma l output, 2 for more verbose output and 3 for debug
В вашем случае будет установлена последняя версия composer, однако в некоторых случаях, для работы, нам может потребоваться более старая версия composer, в таком случае наиболее простым способом является даунгрейд установленной версии.
Допустим нам нужна версия composer 1.10.10 (может быть любая другая требуемая версия), для этого вам потребуется скачать composer.phar файл требуемой версии и положить в вашу директорию, после чегопишем в консоли:
composer self-update 1.10.10
После чего вы можете проверить версию композера написав:
composer --version
В случае если вам требуется вновь вернуться на последнюю версию, вы можете без особых проблем сделать это в одну командку, написав в консоли:
composer self-update --rollback
На этом установка Composer завершена, приступаем к установке Symfony
Symfony
В случае с симфони также как и с композером существует несколько путей для усановки, мы рассмотрим самый простой способ (на мой взгляд), через composer. Для того что бы посмотреть все варианты установки вы можете посетить оффициальный сайт и прочитать подробный гайд по установке.
И так, для успешной установки symfony, последней версии, зайдите в папку с проектами в заранее установленном xampp (или его аналоге). И в командной строке напишите:
composer create-project symfony/skeleton:"6.1.*" my_project_directory
После чего переходим в директорию созданного проекта
cd my_project_directory
Скачиваем в него некоторые зависимости и даже основные каталоги и файлы, которые вам понадобятся для начала работы:
Если требуется более старая версия Symfony
Тогда вы можете выбрать интересующую вас версию на сайте и посмотреть подробный гайд. Мы же рассмотрим пример установки версии Symfony 2.8.
Для этого, также, находясь в папке с проектами пишем:
composer create-project symfony/framework-standard-edition my_test_project "2.8.*"
После чего переходим в папку с проектом
cd my_test_project/
И запускаем проект
php app/console server:run
На этом установка Symfony завершена!
Для того что бы убедится, что всё прошло успешно вы можете, находясь в папке с проектом, написать одну и следующих команд и увидеть вами установленую версию
Для версий разных версий будут подходить разные команды:
1 способ
$ php bin/console --version
#Response
Symfony 5.1.2 (env: prod, debug: false)
2 способ
$ php app/console --version
#Response
Symfony version 2.4.1 - app/dev/debug
3 способ
$ php ./symfony --version
#Response
symfony version 1.4.21-punkave (/var/www/p/releases/20200504161617/lib/vendor/symfony/lib)
На этом всё, надеюсь эта статья будет полезна новичкам. Спасибо за прочтение!