Управление своими модулями для cms c использованием composer
Содержание:
Step 2 — Downloading and Installing Composer
Composer installation is really simple and can be done with a single command:
This will download and install Composer as a system-wide command named , under . The output should look like this:
To test your installation, run:
And you should get output similar to this:
This means Composer was succesfully installed on your system.
If you prefer to have separate Composer executables for each project you might host on this server, you can simply install it locally, on a per-project basis. This method is also useful when your system user doesn’t have permission to install software system-wide. In this case, installation can be done with — this will generate a file in your current directory, which can be executed with .
Использование Composer
Для того чтобы указать какие пакеты нужно устанавливать используется конфигурационный файл composer.json. В нем сообщаются зависимости вашего проекта, а также их версии. Создайте этот файл в корневой папке вашего проекта. Синтаксис записей очень прост, и если вы раньше имели дело с JSON, то без проблем разберетесь:
{«require»: {«производитель/пакет»: «версия»}»require-dev»: {«производитель/пакет»: «версия»}}
Секция require отвечает за пакеты, необходимые для работы программы, а require-dev — только за пакеты для разработки. Например, для нашего проекта необходимо установить библиотеку работы с RSS Atom — picofeed. Для этого сначала откройте сайт https://packagist.org и найдите этот пакет:

На его странице вы можете видеть команду composer, которой его можно установить, в ней полное имя, а чуть ниже версию:

Наш файл будет выглядеть вот так:

Для того чтобы установить все пакеты, описанные в файле конфигурации, используйте команду:

После установки пакетов composer создает файл autoload.php в папке vendor вашего проекта, с помощью него можно включить в проект все библиотеки, которые были установлены. Для этого достаточно подключить этот файл к проекту с помощью инструкции include или require:
Например, возьмем небольшой пример чтения ленты rss с GitHub:
require(«vendor/autoload.php»);
use PicoFeed\Reader\Reader;
use PicoFeed\PicoFeedException;
try {
$reader = new Reader;
// Return a resource
$resource = $reader->download(‘https://losst.ru/feed/’);
// Return the right parser instance according to the feed format
$parser = $reader->getParser(
$resource->getUrl(),
$resource->getContent(),
$resource->getEncoding()
);
// Return a Feed object
$feed = $parser->execute();
// Print the feed properties with the magic method __toString()
echo $feed;
}
catch (PicoFeedException $e) {
// Do Something…
}
?>


Вы можете управлять зависимостями не только с помощью конфигурационного файла. Composer имеет несколько команд для легкого управления. Чтобы добавить пакет в зависимости проекта используйте команду require:

Пакет сразу же будет установлен. А теперь вы его можете удалить:
Если версии пакетов устарели, то вы можете их обновить с помощью одной команды:

Installing Composer
This section will show you how to install Composer on shared hosting and operating systems like Linux, macOS, and Windows.
The commands to install Composer on shared hosting, Linux (PC or server), and macOS are the same.
Note that Composer comes pre-installed on Hostinger’s Premium and Business shared hosting plans. If you are using one of them, skip this part. However, if you find out that it’s outdated, you can update Composer by running this command:
php composer.phar self-update
Follow this instruction to know how to install Composer on your system:
- Connect to your hosting account using SSH connection. You can learn how to do so from this SSH tutorial.
- Download Composer from the official website using the following command:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - Verify the installer’s signature (SHA-384) to ensure that the installer file is not corrupt. Enter:
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"The long string of characters in the above command (‘e0012edf…’) is the installer’s signature. It changes every time a new version of Composer comes out. Therefore, be sure to fetch the latest SHA-384 from this page.
- Once it’s done, you may install Composer locally or globally. Local installation means that the dependency manager will be stored in your current directory, and you have to specify the path before executing corresponding commands. Meanwhile, global installation allows you to run Composer from anywhere on your system by storing it in /usr/local/bin directory. Here is how to complete both methods:
-
Local installation:
php composer-setup.php
-
Global installation:
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
You will get this result:
All settings correct for using Composer Downloading... Composer (version 1.10.5) successfully installed to: /usr/local/bin/composer
-
Local installation:
- Once it’s done, remove the installer:
php -r "unlink('composer-setup.php');" - Test the Composer installation:
composer
The command line will return with this result:
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ / __ `__ / __ / __ / ___/ _ / ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / ____/____/_/ /_/ /_/ .___/____/____/___/_/ /_/ Composer version 1.10.5 2020-02-12 16:20:11
2. Installing Composer on Windows
Getting started with Composer on a Windows machine is a bit different. No command-line instructions are necessary for downloading and installing the software.
Simply follow these steps:
- Install PHP on your computer. We recommend using XAMPP for this purpose, as the process is straightforward and you can complete it in a few minutes.
- Once XAMPP is installed, download the latest version of Composer.
- Run Composer installation wizard. When it asks you to activate the developer mode, ignore it and continue with the installation process.
- Another window will pop up and ask you to locate the PHP command line. By default, it is in C:/xampp/php/php.exe. After specifying the location, click Next.
- You will be prompted with Proxy Settings. Leave the box unchecked and skip this part by hitting Next. Then, on the last window, click Install.
- After completing the installation, open the command prompt. Press CTRL +R, type in “cmd,” and click OK.
- Enter the following command:
composer
Great job! You now have Composer installed on your Windows computer. The installer will automatically add Composer to your PATH variable. Now you can open the command prompt and run the software from anywhere.
Environment Variables
The installer will modify the System path for All Users installs, or the User path for Current User installs:
- the path to PHP will be added if missing, or replaced if a different PHP is selected. For default All Users
installs you must confirm that you accept responsibility for the access control of this location. This is important
if other people use the computer because it could enable escalation of priveleges exploits. - the path to the composer files directory will be added/replaced.
In addition the installer will add the following to the environment of the current user:
- the directory to your path.
- an value, if a proxy is specified in the installer.
The uninstaller will remove the path to the composer files directory and, if the user data was removed, the
path. The PHP path and any value will be left intact.
Tools
- Composer-Yaml — This tool converts to .
- OctoLinker Browser Extension — Enables you to navigate Composer/NPM dependencies on Github.
- ComposerRequireChecker — A CLI tool to analyze dependencies and verify that no unknown imported symbols are used in the sources of a package.
- Composer-Unused — A CLI tool, which scans your code and shows unused Composer dependencies.
- Composer-Normalize — The plugin helps to keep your file(s) consistent by restructuring and sorting entries (normalizing).
- Composer-Service — Enables you to run Composer as a service on a remote server.
- Composer PreferLowest Checker — Strictly compare the specified minimum versions of your composer.json with the ones actually used by the prefer-lowest composer update command option.
- Bramus/Composer-Autocomplete — A Bash/Shell autocompletion script for Composer.
- Composer/Xdebug-Handler — Helps you to restart a CLI process without loading the xdebug extension.
Conclusion
Composer helps developers in managing dependencies of PHP projects. Thanks to this software, they can easily integrate and manage open source packages in a single place.
What’s great, Composer can also resolve dependencies on a per-project basis. Thus, developers can control packages for each project and keep the project size in check.
In this article, you have learned how to install and use Composer effectively. To summarize, let’s review all the steps once again:
- Install Composer on shared hosting, Linux, macOS, or Windows system.
- Generate and understand the composer.json file.
- Use Autoload script to load dependencies into your PHP file.
- Update your project dependencies.
Packagist-compatible repositories
- Satis Server — This docker container provides a Satis Server and enables you to run a private, self-hosted Composer repository with support for Git, Mercurial, and Subversion, HTTP API, HTTPs support, webhook handler and scheduled builds.
- Release Belt — Self–hosted Composer repository implementation to quickly integrate ZIP files of third party non–Composer releases.
- Packeton — Private self-hosted Composer repository for vendors. Fork of packagist with adding support for authorization, customer users, groups, webhooks.
Satis
- Gitlab-Composer — This is a branch/tag indexer for Gitlab repositories.
- Satisfy — Satis composer repository manager with a Web UI.
- Satis Control Panel — A simple web UI for managing your Satis Repository with optional CI integration.
- Satis Go — A web server for managing Satis configuration and hosting the generated Composer repository.
Toran Proxy
ToranProxy (deprecated) — In addition to providing a composer repository ToranProxy acts as a proxy server for Packagist and GitHub.
Scripts
- ParameterHandler — Allows you to manage your ignored parameters when running a composer install or update.
- Tooly — Manage needed PHAR files in your project . Every PHAR file will be saved in the composer binary directory. Optional with GPG verification for every PHAR.
- Melody — One-file composer scripts.
- Composer-Travis-Lint — Allows you to lint the Travis CI configuration file ().
- Composer-Multitest — Enables you to run a Composer script against multiple, locally installed PHP versions, which are managed by PHPBrew or phpenv.
- ScriptsDev — Enables you to use a section, which triggers scripts only in dev mode.
- PhantomJS-Installer — A Composer Package which installs the PhantomJS binary (Linux, Windows, Mac) into /bin of your project.
- Composer-Vendor-Cleanup — A script which removes whitelisted unnecessary files (like tests/docs etc.) from the vendor directory.
- Composer Substitution Plugin — A Composer plugin replacing placeholders in the section by dynamic values.
3: Файл composer.json
Файл composer.json содержит информацию о зависимостях, которые должен скачать Composer для определённого проекта. Он позволяет задать необходимые версии зависимостей и исключить их нестабильные и потенциально опасные версии.
Этот файл не рекомендуется создавать вручную, поскольку при этом можно допустить ошибку в синтаксисе. Composer автоматически создаст файл composer.json после того, как вы добавите первую зависимость при помощи команды require. Остальные зависимости можно добавить с помощью этой же команды, и при этом нет необходимости вручную редактировать файл.
Процесс установки зависимостей проекта при помощи Composer состоит из следующих этапов:
- Определение необходимых приложению библиотек.
- Поиск подходящей открытой библиотеки в Packagist.org, официальном репозитории Composer.
- Выбор зависимостей.
- Запуск команды composer require, которая добавляет зависимости в файл composer.json и устанавливает пакеты.
Рассмотрим этот процесс на примере простого приложения.
Цель этого приложения — превратить заданное предложение в «понятный» URL (или slug); как правило, это приложение используется для преобразования названий страниц в URL-адреса (к примеру, обратите внимание на последний сегмент URL-адреса этого урока). Итак, создайте каталог проекта; для примера назовём его slugify:
Итак, создайте каталог проекта; для примера назовём его slugify:
Поиск пакетов на Packagist.org
Теперь попробуйте найти пакет, генерирующий slug-адреса, в репозитории Packagist.org. Просто введите в поле поиска запрос slug.
Справа возле каждого результата поиска можно увидеть два счётчика. Первый показывает, сколько раз пакет был установлен; второй счётчик показывает, сколько раз пакет был отмечен на GitHub. Результат поиска можно переупорядочить согласно показателю одного из счётчиков. Конечно, пакеты с большим показателем счётчиков, как правило, более стабильны, так как они многими используются
Также важно проверить описание пакета – действительно ли это нужный пакет?
Итак, нужно найти простой конвертёр адресов. В руководстве используется пакет cocur/slugify.
Обратите внимание: Packagist указывает имя вендора и имя пакета (vendor name и package name). Каждому пакету присваивается уникальный идентификатор, или пространство имён (в том же формате, что и для репозиториев Github: vendor/package)
Необходимый пакет называется cocur/slugify. Чтобы загрузить пакет автоматически, нужно указать менеджеру зависимостей пространство имён пакета.
Запрос пакета
Итак, теперь точное имя пакета известно. Используйте команду composer require, чтобы добавить этот пакет в файл composer.json:
Как видите, Composer автоматически определяет необходимую версию пакета. Проверьте каталог проекта, теперь он содержит два файла (composer.json и composer.lock) и каталог vendor:
Файл composer.lock используется для хранения данных о версиях установленных пакетов и обеспечивает использование одинаковых версий пакетов в случае клонирования проекта. Каталог vendor содержит зависимости проекта.
Внимание! В случае использования контроля версий не отправляйте сообщения о коммитах каталога vendor; это применимо только для файлов composer.json и composer.lock. При установке проекта, который уже содержит файл composer.json, используйте следующую команду, чтобы установить зависимости проекта:
При установке проекта, который уже содержит файл composer.json, используйте следующую команду, чтобы установить зависимости проекта:
Ограничения версий
Файл composer.json содержит примерно такой код:
Обратите внимание на знак вставки (^) перед номером версии. Для определения версии пакета Composer может использовать несколько типов ограничений и форматов; эта функция позволяет следить за стабильностью проекта
Оператор ^ используется в файле composer.json для максимальной совместимости версий. В данном случае он определяет версию 1.3 как минимальную и разрешает обновления до версии 2.0.
В целом, вам не придётся особенно долго возиться с ограничениями версий в файле composer.json. Однако в некоторых ситуациях может потребоваться отредактировать ограничения вручную (например, если вышла новая версия библиотеки, но composer.json не разрешает обновиться до неё).
Эта таблица поможет разобраться в том, как работают ограничения версий Composer:
Ограничение Значение Некоторые допустимые версии
Примечание: Подробнее об ограничениях версий можно прочесть в документации программы.
Установка Composer на хостинг
Для установки Composer на хостинг, можно просто скачать данную программу самостоятельно, а затем загрузить её в корневую директорию проекта, например, с помощью FTP.
Самостоятельная загрузка нужной версии Composer выполняется со страницы «Download». Версии программы на данной странице расположены в разделе «Manual Download».
Выполнение команд на удалённом сервере обычно осуществляют с помощью SSH. По умолчанию на shared хостингах данный сетевой протокол выключен. Для его включения необходимо найти соответствующий пункт в панели управления, открыть его и нажать в нем на кнопку «Включить SSH».
Если вы пользователь Windows 10, то клиент SSH включен в систему по умолчанию. Поэтому для выполнения команд на удаленном сервере, можно в этой версии Windows не устанавливать никакой дополнительный софт, а например, воспользоваться программой «Командная строка» или «Windows PowerShell».
Например:
Использование Composer
Если вы хотите использовать сторонние библиотеки, то при создании проекта на PHP или в уже готовом проекте вам необходимо инициализировать Composer для данного проекта. Инициализация всего лишь предполагает создание файла composer.json в корне вашего проекта с нужными вам параметрами. Проще всего это сделать в автоматизированном режиме командой composer init находясь в корневой директории вашего проекта
composer init
Далее вы перейдёте в интерактивный режим генерации package.json, в котором система вам задаст несколько следующих вопросов:
Package name — название вашего проекта(пакета). Обычно пишется в формате <vendor>/<package>, где vendor — название организации или разработчика, а package — название проекта или библиотеки.
Description — описание приложения.
Author — автор проекта. Обычно предлагает по умолчанию ваши данные из Git. примерный формат Nikolay Sergeychuk <nicknixer@gmail.com>
Далее задаст еще несколько вопросов, которые тоже можно просто пропустить, и предоставит листинг готового package.json.
Для примера я создам директорию для проекта и первым делом инициализирую в нём Composer

Пример инициализации Composer
Теперь в проекте есть файл package.json, в который мы можем добавлять списо зависимостей.
Зависимости бывают двух типов: обычные и девелоперские.
Обычные зависимости — это зависимости, которые будут использоваться в исходном коде проекта и необходимы для его работы. К нип относятся различные подключаемые и используемые библиотеки.
Девелоперские зависимости — зависимости, которые нужны лишь на этапе написания кода и не нужны в продакшене. Например библиотеки для тестирования, на продакшене они совсем необязательны.
Для добавления зависимости к проекту можно использовать команду следующего вида
composer require somepackage/somepackage:someversion
Например нам необходимо в проекте сгенерировать файл для Excel, для этого нам нужно было бы разобраться как устроены такие файлы и написать код, который будет создавать такой файл — это всё очень долго. С Composer мы можем просто найти готовую билбиотеку, подключить её и использовать удобный API для создания таких файлов.
Давайте подключим такую библиотеку, для примера возмём PHPExcel. Найти библиотеки можно на сайте https://packagist.org/
composer require PHPOffice/PHPExcel
После чего Composer скачает данную библиотеку и пропишет зависимость в package.json

Установка пакета в Composer
Содержимое package.json изменилось, а в корне проекта появилась директория vendor с файлами установленной библиотеки. При переносе исходного кода, например при использовании системы контроля версий (Git etc.), совсем необязательно тянуть с собой директорию vendor. Достаточно переностить проект без нее, а затем выполнять composer install в корне проекта. Composer скачает и установит пакеты, прописанные в package.json
Если вы хотите обновить ваши пакеты до совместимых версий выше, то используйте команду composer update
Updating Your Project Dependencies
Lastly, you have to know how to update your packages. This can be done in one of two ways:
-
Universal update. To check and install updates for all of your packages and dependencies at once, type in the following command:
composer update
-
Package-specific update. Execute this command to check the updates for one or more specific packages:
composer update vendor/package vendor2/package2
Remember to replace vendor/package with the name of the package that you want to update.
By running the update command, Composer also updates the composer.json and composer.lock files to match the current state of your project dependencies.
Using Autoload Script
Your project is almost good to go, and the only thing left to do is load the dependency into your PHP script. And fortunately, Composer’s autoload file helps you to complete this process faster.
To use autoloading, write the following line before you declare or instantiate new variables in your script:
require '/vendor/autoload.php'
We’ll give you an example to help you understand better.
Let’s say we want to test our phptimer project:
- Open nano text editor to create a script named demo.php.
nano demo.php
Then, paste the following lines to your file:
<?php require __DIR__ . '/vendor/autoload.php' Timer::start(); // your code $time = Timer::stop(); var_dump($time); print Timer::secondsToTimeString($time);
- Run the script:
php demo.php
The terminal should display an output similar to the following:
double(1.0893424438611E-5) 0 ms