composer - uniqcle/Bitrix GitHub Wiki

Installing Locally

4 команды, которые необходимо выполнить по отдельности. Находимся в рабочем каталоге

# Скачивает установщик
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

# Валидирует скаченный установщик      
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"  

# Запускает установщик
php composer-setup.php

# Удаляет установщик
php -r "unlink('composer-setup.php');"

Installing Globally

# Переходим в папку
/usr/local/bin/composer 

# и скачиваем сюда
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer/composer.phar
alias composer='/usr/local/bin/composer/composer.phar'
composer --version

# Инициализуем проект в рабочей папке, напр. local (будет располагаться vendors, json). Заполняем данные
composer init

# Устанавливаем пакеты. Появляется папка ```vendor```
composer require intervention/image

# или в секции require прописываем, например и нажимаем install
"symfony/var-dumper": "v4.1.0",
"monolog/monolog": "1.23."

# В Битриксе в init добавляем
if(file_exists( $_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php' )){
    require_once( $_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php' );
}
// php composer.phar require ...
Подключаем свои классы в Битрикс через автозагрузку composer

Создаем свои классы в папке local/php_interface/skillbox/class/

namespace Skillbox;

class Catalog
{
    public function test(){
        echo 'test catalog';
    }
}
namespace Skillbox;


class Test
{
    public function test(){
        echo 'test test';
    }
}

В разделе "autoload" прописываем

{
    "name": "uniqcle/uniqcle",
    "description": "description",
    "license": "free",
    "authors": [
        {
            "name": "Anuchkin Andrey",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "stable",
    "require": {
      "monolog/monolog": "1.23."
    },
    "autoload": {
        "psr-4": {
            "Skillbox\\": "../local/php_interface/skillbox/class/" // относительно composer.phar
        }
    }
}

Запускаем php composer.phar dump-autoload

Также не забываем подключить автозагрузчик в init.php

if(file_exists( $_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php' )){
    require_once( $_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php' );
}

Вызов в коде

$catalog = new \Skillbox\Catalog();
$catalog->test();

$test = new \Skillbox\Test();
$test->test();

Установка пакетов

http://image.intervention.io/

php composer.phar require intervention/image  # Composer установки пакет intervention
apt-get install php-imagick                   # Устанавливаем, если нет пакета imagick
php7.2-mbstring                               # Дополнительно еще можно поставить
service php7.2-fpm reload                     # Перезапускаем службу php-fpm

Папку Vendors лучше исключить из Git'a. Добавить в .gitignore

Установка через Dockerfile

...
#устанавливаем php расширения
RUN apt-get install -y \
    php-pdo php-pdo-mysql \
    php-mysql          \
    php-mbstring php-tokenizer \
    php-xml php-simplexml php-zip \
    php-opcache php-iconv php-intl \
    php-json php-gd php-ctype php-oauth \
    php-apcu php-imagick php-xdebug \
    php-memcached php-ftp php-imap \
    php-curl iputils-ping

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
...

автоподключение в php.ini

если composer установлен локально в папку local

# автолоадер композера
if(file_exists( $_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php' )){
	require_once( $_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php' );
}

Устанавливаем расширение php

Необходимы установленные и включенные расширения xmlreader.ini и xmlwriter.ini

/etc/php.d/xmlreader.ini 
/etc/php.d/xmlwriter.ini

Устанавливаем composer -V

Далее инициализируем проект composer init в папке local/php_interface

Далее заходим в папку local/php_interface и устанавливаем пакет

composer require phpoffice/phpspreadsheet

Подключаем autoload в init.php

# автолоадер композера
if(file_exists( __DIR__ . '/vendor/autoload.php' )){
	require_once( __DIR__ . '/vendor/autoload.php'  );
}

далее работа с самим расширением

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadSheet = new Spreadsheet();
$writer = new Xlsx($spreadSheet);
$activeSheet = $spreadSheet->getActiveSheet();

$column = 'A';
foreach ($arResult['COLUMNS'] as $value) {
	$activeSheet->setCellValue($column.'1', $value['name']);
	$column++;
}

$row = 2;
foreach ($arResult['LISTS'] as $value) {
	$column = 'A';
	foreach ($value['data'] as $itemText) {
		$activeSheet->setCellValue($column.$row, $itemText);
		$column++;
	}
	$row++;
}
⚠️ **GitHub.com Fallback** ⚠️