beeralex / beeralex.core
My base Bitrix module
Package info
github.com/BkycHblu-6oPwuK/beeralex.core
Type:bitrix-module
pkg:composer/beeralex/beeralex.core
Requires
- php: >=8.2
- composer/installers: ^1.0|^2.0
- guzzlehttp/psr7: ^2.6
- psr/http-message: ^1.0 || ^2.0
- psr/log: ^3.0
- vlucas/phpdotenv: ^5.5
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-master
- v1.2.08
- v1.2.07
- v1.2.06
- v1.2.05
- v1.2.04
- v1.2.03
- v1.2.02
- v1.2.01
- v1.2.0
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.09
- v1.1.08
- v1.1.07
- v1.1.06
- v1.1.05
- v1.1.04
- v1.1.03
- v1.1.02
- v1.1.01
- v1.1.0
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.09
- v1.0.08
- v1.0.07
- v1.0.06
- v1.0.05
- v1.0.04
- v1.0.03
- v1.0.02
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2026-09-22 07:11:52 UTC
README
Базовый модуль для разработки Bitrix-приложений с современным подходом к архитектуре. Предоставляет инструменты для работы с инфоблоками, репозиториями, сервисами, контроллерами и многое другое.
Возможности
- 🎯 Dependency Injection - Управление зависимостями через DI-контейнер
- 📦 Repository Pattern - Удобная работа с данными (инфоблоки, хайлоад-блоки)
- ⚙️ Сервисы - Готовые сервисы для типовых задач
- 🎮 Контроллеры - Базовые контроллеры с автовалидацией
- 🔧 Конфигурация - Типобезопасная система настроек
- 🚀 Vite Integration - Интеграция с современным фронтендом
Быстрый старт
Установка
Добавьте в composer.json настройку для установки в local/modules (или в bitrix, это на ваше усмотрение):
{
"extra": {
"installer-paths": {
"local/modules/{$name}/": ["type:bitrix-module"]
}
}
}
Установите пакет:
composer require beeralex/beeralex.core
Версии
до версии 1.2 минимальная версия php - 8.1
- ~1.1 - php 8.1
- ~1.2 - php 8.2
Активация
В админке: Marketplace -> Установленные решения -> Установить
И в /local/php_interface/init.php:
\Bitrix\Main\Loader::includeModule('beeralex.core');
Первый код
use Beeralex\Core\Repository\IblockRepository; use Beeralex\Core\Service\UserService; // Работа с репозиториями $newsRepo = new IblockRepository('news'); $news = $newsRepo->getList(['ACTIVE' => 'Y']); // Использование сервисов $userService = service(UserService::class); $password = $userService->generatePassword([2]);
Функции-хелперы
Модуль предоставляет глобальные функции-помощники для упрощения работы:
service()
Получение сервиса из DI-контейнера с поддержкой типизации:
// Автоматическое определение типа благодаря @template $userService = service(UserService::class);
firstNotEmpty()
Возвращает первое непустое значение или значение по умолчанию:
$value = firstNotEmpty('default', $var1, $var2, $var3); // Вернет первое непустое из $var1, $var2, $var3 или 'default'
toFile()
Быстрое логирование данных в файл (для отладки):
toFile($data); // Логирует в log.log toFile(['user_id' => 123, 'action' => 'login']); // Логирует массив
coreLog()
Логирование через встроенную систему Bitrix:
coreLog('Сообщение об ошибке'); coreLog('Детальная информация', 10, true); // С трассировкой и аргументами
isLighthouse()
Определяет, является ли запрос от Google Lighthouse:
if (isLighthouse()) { // Специальная логика для аудита производительности }
isImport()
Проверяет, идет ли обмен с 1С:
if (isImport()) { // Логика для импорта из 1С }
isCli()
Проверяет запущен ли скрипт из под cli
if (isCli()) { // Скрипт выполняется из под cli }
Документация
- Dependency Injection - DI контейнер
- Репозитории - Работа с данными
- Сервисы - Все сервисы модуля
- Контроллеры - HTTP контроллеры
- Конфигурация - Система настроек
Примеры использования
Repository Pattern
use Beeralex\Core\Repository\IblockRepository; $newsRepo = new IblockRepository('news'); // Получение данных с фильтром и сортировкой $items = $newsRepo->getList( ['ACTIVE' => 'Y'], [ 'select' => ['ID', 'NAME', 'DATE_CREATE'], 'order' => ['DATE_CREATE' => 'DESC'], 'limit' => 10 ] ); // Добавление элемента $id = $newsRepo->add([ 'NAME' => 'Новость', 'ACTIVE' => 'Y', 'PROPERTY_VALUES' => [ 'CATEGORY' => 5 ] ]);
Dependency Injection
use Beeralex\Core\Service\FileService; use Beeralex\Core\Service\PaginationService; // Получение сервисов из DI-контейнера $fileService = service(FileService::class); $paginationService = service(PaginationService::class); // Использование $fileService->includeFile('catalog.index', ['productId' => 123]); $pages = $paginationService->getPages(1, 10);
API Controller
use Beeralex\Core\Http\Controllers\ApiController; class ProductController extends ApiController { public function listAction(int $limit = 10): array { $repository = new IblockRepository('catalog'); return [ 'items' => $repository->getList( ['ACTIVE' => 'Y'], ['limit' => $limit] ) ]; } }
Архитектура
┌─────────────────────────────────┐
│ Controllers (HTTP) │ <- Обработка запросов
├─────────────────────────────────┤
│ Services (Business Logic) │ <- Бизнес-логика
├─────────────────────────────────┤
│ Repositories (Data Access) │ <- Доступ к данным
├─────────────────────────────────┤
│ Models/Entities │ <- Данные
└─────────────────────────────────┘
Требования
- PHP >= 8.2
- 1С-Битрикс >= 25.0.0 - рекомендуемая версия поддерживающая php 8.2
- Composer
установка модуля пройдет без ошибок, даже если версия битрикса ниже требуемой, но могут быть не стабильности в работе
Лицензия
MIT
Автор
Alexandr Belotsitsko (sanyabelyy020@gmail.com)