Работа composer (быстрый старт)

 

1495435483-300px

 

Что такое Composer? Это пакетный менеджер, с помощью которого вы можете добавлять и удалять подключаемые библиотеки к вашему php проекту. В интернете много  информации о назначение composer. Задача данного поста описать базовый принцип работы с composer.

Подробная информация есть в официальной документации.

Краткое оглавление поста:

 

Как установить Composer ?

 

Физически composer представляет собой phar скрипт (что это?) и существует три способа установки:

  1. Способ «в лоб», просто скачать файл composer.phar с сайта разработчика  (нижняя часть страницы). Далее поместить composer.phar в вашу директорию проекта.
  2. Если вы работаете на Windows, то скачать и запустить установочный файл Composer-Setup.exe.
  3. Установка через интерпритатор php, с помощью установочного скрипта (раздел Command-line installation)

Установочный файл Windows и установочный php скрипт (способ 2 и 3) по сути, просто скачивают composer.phar и прописывают путь до него в переменную окружения PATH.

 

 

Как использовать? (добавляем зависимости)

 

Пусть мы сидим на Windows, используем OpenServer и просто скачали composer.phar в директорию проекта. Первое, перейдем в директорию проекта:

 

 

Для работы composer необходимо иметь специальный файл — composer.json. Он содержит описание зависимостей вашего проекта. Другими словами в нем список, какие пакеты необходимо скачать с репозитория (packagist.org) и прописать в скрипте автозагрузки (autoload.php). Но о packagist.org и autoload.php чуть попозже, пока сконцетрируем внимание как создать столь нужный файл — composer.json.

Для создания composer.json и добавления зависимостей к вашему проекту, нужно в интерпретаторе php вызвать скрипт composer.phar с параметром require. Если не прописать в системной переменной Windows —  PATH путь до php.exe, то запуск composer будет выглядеть примерно так:

 

 

Это не очень удобно. Для того, что-бы данная команда выглядела вот так — php.exe composer.phar require, необходимо прописать в PATH путь до php.exe.

(если вы устанавливали composer с помощью установочного файла или скрипта, в PATH путь прописывается автоматически)

Шаги:

  1. В строке «Поиск» выполните поиск по слову: Система
  2. Нажмите на ссылку Дополнительные параметры системы.
  3. Нажмите Переменные среды. В разделе Переменные среды выберите переменную среды PATH. Нажмите Изменить.

 

setting_path

 

После выполнения команды:

composer попросит вас ввести имя для поиска пакета в packagist.org. Введем в качестве примера «hello«.

 

composer_search

 

В результате composer выполнил запрос к packagist.org и  выдал нам список пакетов где встречается слово «hello«.

Как вы наверное уже догадались packagist.org это репозиторий библиотек и проектов для PHP. Если вы знакомы с хостингами проектов типа githab.combitbucket.org и т.п., то можно сказать что packagist.org тоже самое, но специально для PHP приложений.

В качестве примера подключим в качестве зависимости пакет под номером 0 — «iralance/hello«, пишем 0 и жмем Enter. Каждый пакет содержит имя разработчика, в данном случае — iralance и имя пакета — hello.

Далее, composer попросит ввести версию пакета, в противном случае будет считаться последняя. Согласимся на последнюю версию, жмем Enter.

Если все ок, composer попросит вас ввести имя для следующего пакета. В случае если вы не хотите больше добавлять пакеты к своему проекту, просто нажмите Enter. Как результат composer создаст два файла:

 

file_composer

 

Как мы говорили ранее файл composer.json содержит описание зависимостей, а новый для нас файл composer.lock хранит информацию о текущей версии пакетов, но об этом чуть позже.

Помимо данных файлов, в папке вашего проекта появилась директория — vendor. Что это?

Зайдем в нее.

composer_vendor

Это как раз та директория, где физически находится пакет — «iralance/hello«. Теперь мы можем подключить данный пакет с помощью include или require и использовать его функционал. Но, composer может облегчить нам задачу, дело в том, что он умеет не только скачивать пакеты с packagist.org, он умеет эти пакеты еще и подключать к проекту. Что это значит?

Допустим ваш проект содержит за несколько десятков пакетов зависимостей и вам придется все их подключить. Вы или напишите несколько десятков include (или require) или создадите отдельный скрипт который сам подключит все, что есть в vendor. Вот composer как раз такой скрипт и создает, называется он autoload.php.

(на самом деле, он подключит только те пакеты, которые вы используете, тем самым экономя оперативную память)

От вас потребуется только вызывать его в начале вашего проекта, дальше он все сделает сам.

Физически скрипт autoload.php располагается в корне директории — vendor.

Директория composer это служебные файлы самого composer, нам они не интересны.

 

Поднимемся на директорию выше

Итак, у нас создан файл composer.json и загружены все зависимости (пакет iralance/hello) в директорию vendor. Теперь мы можем создавать собственный php скрипт, который будет использовать функционал зависимости.

Создадим директорию с произвольным именем, например web, в ней создадим файл index.php

 

 

Данный пример это тестовый проект на OpenServer, в реальном проекте надо настроить web сервер так, что-бы публичная папка была только web. Все остальное должно быть скрыто от посетителя, другими словам точка входа это скрипт index.php в папке web. Все остальное, это функционал.

Подключим в начале index.php автозагрузчик autoload.php.

 

 

Теперь мы можем использовать возможностями зависимого пакета.

Т.к. мы скачали произвольный пакет по ключевому слову hello, то можно предположить, что он способен выводить только приветствие, что-то вроде «Hello World».

Разберемся, как работать с пакетом, какие он методы имеет. Зайдем в директорию vendor, далее в директорию пакета iralance, далее в hello.

В директории пакета есть папка src с скриптами пакета. В данном случае, src содержит единственный скрипт say.php. Посмотрим, что внутри данного файла:

 

 

Как видно пакет содержит класс Say и метод message(), который возвращает строку «Hello World v1.0.6«. Это весь функционал пакета.

 

Теперь главный момент, зачем все это создавалось. Мы можем вызвать в нашем index.php метод данного пакета через пространства имен. Автозагрузчик тем самым обеспечит автоматическую подгруздку файла пакета в наш index.php.

 

На файл index.php тогда должен иметь вид:

 

 

Про путь Iralance\Hello, имя класса и метода я узнал из самого файла say.php.

В целом инструкции как работать с пакетом, какие методы какого класса вызывать описывают на страницы пакета на packagist.org.

 

Как пример, опишу другие способы вызова метода message() данного пакета:

 

Или так:

Или например так:

 

Обратимся в браузере к файлу index.php и увидим следующий результат:

 

composer_hello

 

 

Как еще добавить зависимости?

 

Если нужно добавить еще зависимости необходимо выполнить команду:

 

 

Повторяете действия по аналогии, в результате будет обновлена папка vendor и скрипт автозагрузки autoload.php. Файл index.php править не нужно.

В качестве примера подключим еще один пакет «simplecalendar» от «donatj».

Введем команду:

 

 

Далее ответим на вопрос именем «simplecalendar», укажем 0, соглашаемся с последней версией жмем enter.

composer_calendar

 

После подключения новой пакета, нужно разобраться как с ним работать. Можно найти в git репозиториях или packagist.org данный пакет и почитать Readme (как я говорил ранее), а можно посмотреть и изучить код скрипта.

Я опять-же воспользуюсь вторым способом, в директории пакета есть пример  (директория example), согласно нему я должен добавить наш index.php следующий код:

 

 

А также, я должен в начале index.php подключить таблицу стилей пакета:

 

 

В итоге index.php выглядит так:

 

 

Обратимся в браузере к файлу index.php и получим следующий результат:

 

composer_calendar_hello

 

Мы видим работу двух пакетов «iralance/hello» и «donatj/simplecalendar«.

 

 

Как удалить пакет из зависимости?

 

Допустим мы хотим удалить пакет «iralance/hello«.

Для этого необходимо ввести следующую команду:

 

 

В результате увидим следующий текст в консоли

 

composer_delete

 

Если мы обратимся в браузере к файлу index.php, то увидим сообщение об ошибке:

 

composer_error

 

Все правильно, мы просто оставили в index.php код вызова методов пакета «iralance/hello«, удалим его.

Файл index.php без вызова методов пакета «iralance/hello«:

 

 

Если обратиться к файлу index.php через браузер, то мы увидим результат работы пакета «donatj/simplecalendar«.

Если открыть файл composer.json, то там будут записи только по пакету «donatj/simplecalendar»

 

 

Все верно, мы успешно удалили пакет «iralance/hello» из зависимостей.

 

 

Передача проекта с зависимостями composer

 

Дело в том, что ваш php проект с composer зависимостями можно передавать без исходников пакетов, другими словами без папки vendor.

Главное, это иметь файлы:

 

file_composer

 

Допустим, вы ваш php проект загрузили на хостинг bitbucket.org.

Для тех кто захочет его развернуть на своем сервере, будет достаточно установить composer и ввести команду:

 

 

В результате, будет создана директория vendor со всеми указанными зависимостями в composer.json. Причем версии пакетов будут точно совпадать с вашими, за это отвечает файл composer.lock.

(файл composer.lock не обязателен)

 

 

Установка проекта с помощью composer (Yii, Symfony, OpenCart и т.п.)

 

Репозиторий composer — packagist.org можно использовать как среду для распространения php проектов. На данный момент уже некоторые фреймворки (Yii, Symfony, Laravel) и CMS (OpenCart) в замен классическому скачиванию с сайтов разработчика (или с git) распространяются через packagist.org

Почему так вышло?

Дело в том, php проекты которые использует в качестве зависимостей composer пакеты устанавливается с помощью следующей последовательности действий:

1. скачивается php проект с сайта разработчика или git репозитория

2. далее в директории скаченного проекта запускается установка пакетов

 

Данные две операции объединили в одну команду:

 

 

Например для установки Yii с шаблоном basic нужно вести:

 

 

Например для установки Symfony нужно ввести:

 

 

Более подробное описание команд по установки проектов вы можете почитать по ссылке.

 




Буду признателен если вы поделитесь данным постом


Ваш комментарий


Ответ в цифрах

 
© s-engineer.ru, 2012-2017 | Все права защищены