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);