Site Tools


composer

НЕ ЗАГРУЖАЕТСЯ autoload ?!
Не забываем обновить после изменения autoload структуры

composer.phar dumpautoload




Получаем composer через curl -s http://getcomposer.org/installer | php
Интерпретируемым, основным файлом является composer.phar
Получение справки о командах возможно через 
# php composer.phar list
# php composer.phar --help update
Пример устновки Yii2 через composer:
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
Пример обновления одного компонента, в данном случае добавление phpunit в yii:
Добавляем "phpunit/phpunit": "4.1.*" в composer.json и выполняем: 
php composer.phar update phpunit/phpunit

Discussion

Constantin Conovaloff, 2014/10/24 11:58

Flow добавления пакета

  1. Находим на github или в другом месте пакет
  2. Смотрим его composer.json и в начале файла → имя пакета (венор/имя)
  3. composer.phar show вендор/имя # (смотрим доступные версии, зависимости и доп.информацию о пакете)
  4. composer.phar require вендор/имя version # добавляем пакет в нашу зависимость
Constantin Conovaloff, 2014/12/25 10:47

Указание кастомного\приватного пакета

http://fortrabbit.com/docs/how-to/git/use-private-composer-repos

    "repositories": [
        {
            "type": "vcs",
            "url": "git@github.ru:user/project.git"
        }
    ],

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

Constantin Conovaloff, 2015/05/19 13:32

собственный пакет + github + composer

Обновление версии

Для обновеление версии, стоит настроить hook “packagist” для github, который будет обновлять информацию на packagist.org

Constantin Conovaloff, 2015/05/28 12:25

репозиторий в gitlab

"require": {
    "laravel/framework": "5.0.*",
    "whyounes/laravel5-twig": "dev-master"
},
"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/Whyounes/laravel5-twig"
    }
]

или так

{
    "require": {
        "doctrine/orm": "2.3.*",
        "doctrine/common": "dev-ChainDriverFix as 2.3.0"
    },
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/myclabs/common.git"
        }
    ]
}
Constantin Conovaloff, 2015/05/28 12:30

Посмотреть установленные пакеты

composer show --installed
composer show --platform  (установленные в php extension\модули\so-шки)
Constantin Conovaloff, 2015/07/31 13:55

Пример добавление в проект пакета с внутреннего репозитория (форктнутого глобально)

Добавляем в composer.json:

        "janus-ssp/php-x509-validate": "dev-master"  # <-- пакет
	},
    "repositories": [
        {
          "type": "git",   # бывают composer, vcs, git ...
          "url": "git@company.ru:company/php-x509-validate.git"  # <-- локальный репозиторий указывающий на конкретный пакет
        }
    ],

Проверяем, что композер видит пакет:

$ ../composer.phar show janus-ssp/php-x509-validate
name     : janus-ssp/php-x509-validate                        
descrip. : Validate X.509 (SSL) certificates using the 'openssl' command line library.
keywords : 
versions : dev-master, 1.0.3, 1.0.2, 1.0.1, dev-develop
type     : library
source   : [git] git@company.ru:company/php-x509-validate.git eafb7fba6f4892162d7d1693abbcfeb2c2797c29
dist     : []  
names    : janus-ssp/php-x509-validate

autoload
psr-0
Janus_OpenSsl_ => src/
Janus_Shell_ => src/

Устанавливаем и добавляем в composer.lock

$ ../composer.phar update janus-ssp/php-x509-validate    # require при этом устанавливает из официального репозитория
Loading composer repositories with package information
Updating dependencies (including require-dev)                 
  - Installing janus-ssp/php-x509-validate (dev-master eafb7fb)
    Cloning eafb7fba6f4892162d7d1693abbcfeb2c2897c29

Writing lock file
Generating autoload files
Constantin Conovaloff, 2015/09/08 12:27

если composer.lock обновился

composer.phar --prefer-dist --optimize-autoloader install
Constantin Conovaloff, 2016/03/17 17:16

Глобальная установка

На примере php_codesniffer https://github.com/squizlabs/PHP_CodeSniffer

composer global require "squizlabs/php_codesniffer=*"
ls -alh ~/.composer/vendor/bin/
vi ~/.bashrc  # и добавляем ~/.composer/vendor/bin/ к PATH
Constantin Conovaloff, 2016/03/17 17:21

Новый пакет

Можем воспользоваться любым из boilerplate для старта. Например: https://github.com/tomkyle/package-boilerplate

Например, мы пишем библиотеку с namespace my\library, чтобы делать new my\library\MyClass();
При этом файлы мы будем размещать по пути: src/MyClass.php

{
    "name": "package-name",
    "version": "1.0.0-rc",
    "description": "description",
    "license": "proprietary",
    "authors": [
        {
            "name": "Constantin Conovaloff",
            "email": "some@some.com",
            "role": "Developer"
        }
    ],
    "autoload": {
        "psr-4": {
            "my\\library\\": "src/"
        }
    }
}

На время теста пишем стартовый скрипт (start.php):

<?php
error_reporting(E_ALL);
require_once(__DIR__.'/vendor/autoload.php');
$MyClass = new \my\library\MyClass();
$MyClass->test();

Создаем файл класса src/MyClass.php:

<?php

namespace my\library;

class MyClass
{
    public function test()
    {
        echo 'im work' . PHP_EOL;
    }
}

Генерируем autoload в vendor/

composer dumpautoload

И проверяем:

php start.php
Constantin Conovaloff, 2016/03/31 13:33

http://composer.json.jolicode.com/

Constantin Conovaloff, 2016/04/07 13:15

Инициализация нового проекта

composer init
composer require geoip2/geoip2  # опционально, так как это может быть сделано через composer init или vi ./composer.json
composer install
echo '<?php \n require_once(__DIR__ . "/vendor/autoload.php");' > index.php
You could leave a comment if you were logged in.
composer.txt · Last modified: 2019/10/19 17:38 (external edit)

Page Tools