composer - uniqcle/Bitrix GitHub Wiki
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');"
# Переходим в папку
/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
...
#устанавливаем 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++;
}