Composer в Битрикс с автозагрузкой своих классов и библиотек
В Битриксе последних версий уже есть composer. Есть особенности, файл composer.json в Битриксе называется composer-bx.json и лежит он в системной папке bitrix. В папке bitrix есть еще файл composer.json.example, его положили для примера. В итоге для Битрикс будет два файла, смержиных через плагин Composer Merge Plugin.
Для удобства файл composer.json лучше расположить в папке /local/:
local/composer.json{
"name": "vadik/hmarketing",
"autoload": {
"psr-4": {
"Сomposer\\Hmarketing\\": "php_interface/classes/"
}
},
"authors": [
{
"name": "hmarketing",
"email": "info@hmarketing.ru"
}
],
"require": {
"wikimedia/composer-merge-plugin": "dev-master"
},
"config": {
"vendor-dir": "vendor",
"allow-plugins": {
"wikimedia/composer-merge-plugin": true
}
},
"extra": {
"merge-plugin": {
"require": [
"../bitrix/composer-bx.json"
]
}
}
}
Для полноценной работы Bitrix CLI, нужно внести корректировки в файл bitrix/.settings.php. По умолчанию, система ожидает увидеть наш файл composer.json в папке /bitrix/, мы его расположили в папке /local/, чтобы сменить путь, пропишем в файле bitrix/.settings.php:
bitrix/.settings.php'composer' => [
'value' => ['config_path' => '/local/composer.json']
],
Подключим файл autoload.php в init.php, чтобы Битрикс увидел наши созданные классы и подключенные библиотеки:
local/php_interface/init.phpif (file_exists($_SERVER["DOCUMENT_ROOT"]."/local/vendor/autoload.php")) {
require_once($_SERVER["DOCUMENT_ROOT"] . "/local/vendor/autoload.php");
}
После всех вышеперечисленных манипуляций функционал composer подключен и работает.
Автозагрузка собственных классов
Для тестирование, в папке local/php_interface/classes/ создайте файл Test.php со следующим содержимым:
local/php_interface/classes/Test.php<?php
namespace Сomposer\Hmarketing;
class Test {
private string $text;
public function __construct() {
$this->text = 'Hello world!';
}
public function showText() {
echo $this->text;
}
}
В любом файле, где подключен prolog или header, используем:
use Сomposer\Hmarketing\Test;
$test = new Test();
$test->showText();
После обновления страницы в браузере должно быть выведено Hello world!.
Установка библиотек
Теперь, у вас появилась возможность устанавливать публичные библиотеки. Для этого вам потребуется вернуться в консоль и зайти в директорию local, находясь в директории local установим библиотеку для типографа, выполнив команду:
composer require hmarketing/tipograf
После установки, вы сможете увидеть новую зависимость в папке vendor. Теперь, чтобы использовать библиотеку, в любом месте вашего проекта, вы можете использовать следующий код:
<?php
$html = "<div>HTML-код, который надо оттипографить</div>";
// опции здесь опциональны и приведены для примера
$options = [
'OptAlign.all'=>'off',
//'Etc.split_number_to_triads'=>'off',
'Text.paragraphs'=>'off',
'Space.bracket_fix'=>'off',
];
$html = EMT\EMTypograph::fast_apply($html,$options);