Отличия от других фреймворков
Bitrix Framework часто ассоциируется с 1C-Битрикс: Управление сайтом, но ядро CMS — это полноценный PHP-фреймворк. Он включает модульную структуру, роутинг, MVC-элементы, систему событий и другие компоненты, характерные для современных фреймворков. Терминология и реализация может отличаться от привычных понятий в популярных фреймворках: Laravel, Symfony или Yii.
Контроллеры
Контроллер отвечает за обработку запроса и возврат ответа. В Bitrix Framework контроллеры можно реализовать двумя способами:
-
через наследование от класса
Bitrix\Main\Engine\Controller, -
через PHP-скрипты в папке
components.
Первый способ аналогичен контроллерам в Laravel и Yii, где тоже используется наследование. В Symfony маршруты привязывают к методам с помощью аннотаций @Route.
| Фреймворк | Реализация контроллеров |
|---|---|
| Bitrix | Наследование от \Bitrix\Main\Engine\Controller или PHP-скрипты в компонентах |
| Yii | Наследование от yii\web\Controller |
| Laravel | Наследование от Illuminate\Routing\Controller |
| Symfony | Методы класса с аннотациями @Route |
Роутинг
Роутинг определяет, какой код выполнить при обращении к URL. В Bitrix Framework настройка маршрутов осуществляется через файл routing_index.php, в котором указывают путь, контроллер и действие. Подход похож на конфигурацию в Yii, где маршруты задают в массиве.
| Фреймворк | Реализация роутинга |
|---|---|
| Bitrix | Файл routing_index.php |
| Yii | Конфигурация в config/web.php через urlManager |
| Laravel | Файл routes/web.php, использование Route:: фасада |
| Symfony | Конфигурация в config/routes.yaml или через аннотации @Route |
Middlewares или ActionFilter в Bitrix
Middleware — это слой между запросом и контроллером. Он проверяет доступ, логирует и модифицирует данные. В Bitrix Framework используются классы на основе \Bitrix\Main\Engine\ActionFilter, которые привязываются к методам контроллера. Это аналогично фильтрам в Yii. В Laravel middleware работают на уровне HTTP-ядра. В Symfony используют EventSubscriber или KernelEvents.
| Фреймворк | Реализация middleware |
|---|---|
| Bitrix | \Bitrix\Main\Engine\ActionFilter |
| Yii | yii\filters\AccessControl и другие фильтры |
| Laravel | Создание через php artisan make:middleware |
| Symfony | Реализация через EventSubscriber или KernelEvents |
Задачи по расписанию
Задачи по расписанию выполняют фоновые операции в заданное время. В Bitrix Framework для этого используют агенты — PHP-функции, которые регистрируются в системе через CAgent::AddAgent(). Агенты вызываются на хитах при посещении сайта посетителями или по расписанию через cron.
Laravel и Yii запускают задачи через системный cron. В Symfony планированием задач управляет компонент scheduler.
| Фреймворк | Реализация задач |
|---|---|
| Bitrix | CAgent::AddAgent() |
| Yii | Консольные команды (yii migrate) + cron |
| Laravel | app/Console/Kernel.php ($schedule->command()) |
| Symfony | Компонент scheduler |
Очереди
Очереди позволяют откладывать выполнение задач. В Bitrix используется класс \Bitrix\Main\Messenger. Это похоже на yii\queue в Yii и symfony/messenger в Symfony. Laravel использует queue:work и Horizon для управления задачами.
| Фреймворк | Реализация очередей |
|---|---|
| Bitrix | \Bitrix\Main\Messenger |
| Yii | yii\queue\Redis и другие драйверы |
| Laravel | php artisan queue:work + Horizon |
| Symfony | Компонент symfony/messenger |
События и обработчики
События позволяют одному участку кода реагировать на действия другого.
В Bitrix Framework события создают через \Bitrix\Main\EventManager с регистрацией обработчиков по коду события. Это аналогично Event::listen() в Laravel, EventDispatcher в Symfony и Yii::$app->on() в Yii.
| Фреймворк | Реализация событий |
|---|---|
| Bitrix | \Bitrix\Main\EventManager |
| Yii | Yii::$app->on() |
| Laravel | Event::listen() |
| Symfony | EventDispatcher (тег kernel.event_listener, PHP-атрибут AsEventListener) |
CLI инструменты
Командная строка нужна для запуска задач, миграций, тестов. CLI упрощает автоматизацию и разработку.
Bitrix Framework поддерживает CLI через bitrix.php и пакет @bitrix/cli. Создавать команды можно так же, как в Laravel или Symfony. Команды работают в контексте Bitrix Framework, имеют доступ к ядру и API.
| Фреймворк | CLI инструменты |
|---|---|
| Bitrix | @bitrix/cli, bitrix.php |
| Yii | ./yii, например yii migrate |
| Laravel | php artisan |
| Symfony | bin/console |
ORM
ORM позволяет работать с данными из базы в виде объектов. Bitrix Framework использует собственную реализацию через \Bitrix\Main\Entity с поддержкой сущностей, полей и связей.
Это похоже на ActiveRecord в Yii и Eloquent в Laravel. Symfony чаще использует Doctrine ORM с паттерном Data Mapper.
| Фреймворк | Реализация ORM |
|---|---|
| Bitrix | \Bitrix\Main\Entity |
| Yii | yii\db\ActiveRecord |
| Laravel | Eloquent |
| Symfony | Doctrine ORM |
Работа с Email
Отправка email — стандартная задача в веб-приложениях. В Bitrix она реализована через \Bitrix\Main\Mail\Event с использованием шаблонов из административной панели.
В Laravel, Symfony и Yii письма формируют в коде, используя Mail-компоненты и шаблоны в файловой системе.
| Фреймворк | Реализация отправки email |
|---|---|
| Bitrix | \Bitrix\Main\Mail\Event |
| Yii | Yii::$app->mailer |
| Laravel | Mailable-классы, Mail::to()->send(new WelcomeMail()) |
| Symfony | Компонент symfony/mailer |
Работа с SMS и мессенджерами
Интеграция с SMS-шлюзами и мессенджерами требует подключения внешних сервисов.
В Bitrix Framework добавить интеграции можно через REST API или с помощью модулей из Marketplace.
В Laravel, Yii и Symfony используют сторонние пакеты и бандлы для подключения к провайдерам.
| Фреймворк | Реализация SMS/мессенджеров |
|---|---|
| Bitrix | Интеграция через REST API или модули Marketplace |
| Yii | Сторонние пакеты, например, yii2-smspilot |
| Laravel | Пакеты типа laravel-notification-channels |
| Symfony | Сторонние бандлы, например, smsapi-client |
Итоги
Bitrix Framework включает те же архитектурные компоненты, что и другие PHP-фреймворки. Различия есть в терминологии и реализации, например:
-
контроллер в Bitrix Framework может быть компонентом или классом на основе
Engine\Controller, -
middleware называется
ActionFilter, -
задачи по расписанию реализованы через агенты,
-
события управляются через
EventManager, -
CLI-команды доступны через
@bitrix/cli.