Download the PHP package prettybx/support without Composer
On this page you can find all versions of the php package prettybx/support. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package support
Pretty Bitrix (Support)
Библиотека для упрощения работы с Битрикс
Установка
Начало работы
- Инициализируйте сервис провайдер в
local/php_interface/init.php
:
DI container
Для реализации Dependency Injection предлагается использовать Illuminate/Container (DI container из фреймворка Laravel).
Для того, чтобы получить экземпляр контейнера, можно воспользоваться хэлпером container()
Пример:
Фасады
Для удобства тестирования библиотека подключает к проекту и адаптирует к работе ларавелевские фасады. Чтобы сдлать свой фасад, нужно создать класс, унаследовать его от PrettyBx\Support\Base\AbstractFacade
и реализовать в нем метод getFacadeAccessor
, который должен вернуть название класса, спрятанного за фасадом.
Пример:
В тестах можно использовать так:
Глобальные переменные Bitrix
Так как статические методы и глобальные переменные очень плохо поддаются тестированию, для удобства работы с ними предлагается использовать фасады, результаты работы которых можно легко подменять тестовыми двойниками.
$GLOBALS['APPLICATION']
Получить экземпляр класса \CMain, размещенные в $GLOBALS['APPLICATION']
, можно с помощью фасада PrettyBx\Support\Facades\CMain
Пример:
$GLOBALS['USER']
Получить экземпляр класса \CUser можно с помощью фасада PrettyBx\Support\Facades\CUser
. Пример получения текущего идентификатора пользователя:
Пример авторизации:
\Bitrix\Main\Application
Данный класс является основополагающим классов в D7, но в нем пристутствуют статические методы. Кроме того, он является синглтоном на уровне кода, то есть получить его экземпляр можно только с помощью метода getInstance. Это очень сильно затрудняет тестирование. Чтобы сделать тестирование этого класса возможным, предлагается использовать его фасад PrettyBx\Support\Facades\Application
.
Удобная загрузка модулей Bitrix
В разрабатываемых классах очень часто нужно загружать модули Bitrix. Библиотека предоставляет разработчику удобный инструмент для загрузки модулей. Предлагается использовать трайт PrettyBx\Support\Traits\LoadsModules
.
Пример:
В случае, если указанный модуль не может быть загружен, будет выброшено исключение \RuntimeException
Работа с конфигурацией
Библиотека предоставляет удобный инструмент для работы с конфигурацией Bitrix, размещенной в файле bitrix/.settings.php
. Для того, чтобы получить значение элемента конфигурации, можно воспользоваться вспомогательной функцией config
.
Значение многомерного массива можно получить, разделив ключи массива точками, например:
Валидация данных
Для валидации данных используется библиотека Illuminate/Validation
Для того, чтобы использовать ее, предлагается к нужному классу подключить трайт PrettyBx\Support\Traits\Validatable
Пример
В случае, если валидация данных провалится, будет выброшено исключение \InvalidArgumentException
Список всех доступных правил валидации можно смотреть здесь https://laravel.com/docs/5.8/validation
Работа с событиями
Всю работу с событиями предлагается вынести в один класс - EventServiceProvider. Для того, чтобы зарегистрировать свои обработчики событий, создайте класс, наследующийся от PrettyBx\Support\Providers\AbstractEventServiceProvider
. Укажите события, которые нужно обработать, в массиве в защищенном свойстве events
.
Пример:
После этого зарегистрируйте этот класс в php_interface/init.php
:
При регистрации EventServiceProvider подпишет указанные обработчики на указанные события.
Работа с файловой системой
Для удобства работы с файлами есть класс PrettyBx\Support\Filesystem\Manager
, который представляет из себя набор команд для выполнения файловых операций. Рекомендуется зарегистрировать этот класс как синглтон с помощью сервис провайдера:
Теперь файловые операции, такие как переименование, проверка на существование, получение содержимого, удаление и тд, можно осуществлять следующим образом:
или через фасад:
Расширение функционала для работы с файлами
Класс PrettyBx\Support\Filesystem\Manager
реализует трайт Illuminate\Support\Traits\Macroable
, что позволяет на лету добавлять в него свои методы. Рекомендуется делать это в сервис провайдерах. Пример добавления метода append:
-
В сервис провайдере добавляем такую команду:
- Пользуемся
Другие библиотеки в рамках проекта "Pretty Bitrix"
- Удобные фикстуры для юнит тестов: https://github.com/artem-prozorov/prettybxfixtures
All versions of support with dependencies
illuminate/support Version >=5.8
illuminate/container Version >=5.8
mockery/mockery Version >=1.3
phpunit/phpunit Version >=7