proklung/bitrix-symfony-base.git 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

proklung/bitrix-symfony-base.git

Composer 安装命令:

composer require proklung/bitrix-symfony-base.git

包简介

Bitrix build with integration of Symfony

README 文档

README

Заготовка для 1C Bitrix проектов. На базе https://github.com/regiomedia/bitrix-project

Основное отличие: максимальное использование Symfony. Поддерживаются бандлы, сервис контейнер с полным функционалом фрэймворка (аннотации, auto wiring), роутинг, консоль и так далее.

От Битрикса остается админка, база, компоненты (где контейнер доступен через сервис-локатор). Все остальное пишется в максимально приближенной к Symfony манере.

Плюс всевозможный - используемый мною в реальных проектах - функционал (размещается в бандлах Symfony).

А также плоды всевозможных досужих экспериментов, оказавшихся полезными в работе.

Создание нового проекта

  • Создать папку нового проекта в OSPanel/domains и Клонировать эту базовую сборку

К примеру:

git clone proklung/bitrix-symfony-base.git ./
  • Настроить вебсервер для работы с директорией sites/s1 либо сделать симлинк вида

    /home/bitrix/www -> /home/bitrix/projectname/sites/s1

    (Настроить локальный домен в OpenServer со ссылкой на sites/s1)

Зависимости

  • Установить зависимости composer (backend):
composer install
  • Установить зависимости npm (frontend):
npm install

Bitrix

  • Удалить папку bitrix
  • Инициализировать submodule:
git submodule init
  • Запустить submodule (cклонируется bitrix):
git submodule update

Или настроить его иным способом (через git submodule ad).

ВАЖНО

Перед этой процедурой обновить include.php в environments/*/bitrix/modules/main, на актуальный из сабмодуля или устанавливаемого иным способом Битрикса.

После этого рекомендуется сделать еще разок composer update дабы подтянулись битриксовые модули.

Символьные ссылки

В директорию sites/s1 перенести публичные файлы сайта.

В виндовом терминале:

mklink "local" "../../local" /j
mklink "bitrix" "../../bitrix" /j
mklink "upload" "../../upload" /j

База данных и окружение

  • Создать базу данных на localhost

  • Развернуть бэкап базы из bitrix/backup

  • Создать файл .env

touch .env
  • Заполнить его данными в соответствии с файлом-образцом .env.example

  • Развернуть окружение

php bin/jedi env:init default

Эта команда скопирует в директорию `bitrix` системные файлы настроек сконфигурированные для работы с 
[переменными окружения](https://github.com/vlucas/phpdotenv), а также настройки 
[шаблонизатора Twig](https://github.com/maximaster/tools.twig). 

### Миграции

- Установить [модуль миграций](https://github.com/arrilot/bitrix-migrations)

```sh
php migrator install
  • Запуск миграций
php migrator migrate

** Доустановить модуль Базовых Битрикс компонентов. в административном интефейсе:

Marketplace > Установленные решения > ББК (bex.bbc)

"Собрать" фронтенд

npm run encore -- dev

Бэкенд

Composer и PSR-4 автозагрузка классов из директории local/classes. Пространство имен \Local\

Проверка осуществляется командой (это запуск утилиты phpcs с предустановленными параметрами)

composer run lint:php

Также есть возможность исправить часть обнаруженных ошибок утилитой phpcbf

composer run fix:php

Фронтенд

В качестве "сборщика" изпользуется symfony/webpack-encore.

По-умолчанию файлы фронтенда должны располагаться в директории local/assets.

Это можно переопределить в файле конфигурации webpack.config.js

Основные команды:

npm run encore -- dev          # запустить сборку для разработчика один раз
npm run encore -- dev --watch  # запустить сборку для разработчика в режиме слежения за файлами
npm run encore -- production   # запустить сборку для продакшена

Vue

Мини-модуль vueInvoker предназначен для инициализации Vue компонентов на странице. Он упрощает использование Vue классическом веб-приложении, когда нет возможности использовать один "корневой" экземпляр Vue (Как, например, это устроено в одностраничных приложениях).

Использование:

Вывести на страницу элемент-плейсхолдер для компонента:

<div class="vue-component" data-component="DemoApp" data-initial='{"test": "data"}'></div>

Создать соответствущий Vue-компонент (в директории local/assets/scripts/vue/components/:

<template>
    <div class="demo-app">
        {{ hello }}

        {{ initial.test }}

    </div>
</template>

<script>
    export default {
      data() {
        return {
          hello: 'World',
        };
      },
      props: ['initial'],
    };
</script>

Добавить его в Коллекцию local/assets/scripts/vue/collection.js:

import DemoApp from './components/DemoApp.vue';

export default {
  DemoApp,
};

Многосайтовость

Структура проекта напоминает заранее настроенную многосайтовость на разных доменах с отдельными директориями для каждого сайта. Файлы ядра подключаются относительными символическими ссылками. Для добавления нового сайта нужно создать новую директорю в ./sites/(лучше всего если ее название будет соответствовать коду нового сайта). И добавить в нее ссылки на необходимые файлы и директории:

mkdir sites/s2             # создать директорию для дополнительного сайта
cd sites/s2                # перейти в нее
mklink "local" "../../local" /j
mklink "bitrix" "../../bitrix" /j
mklink "upload" "../../upload" /j

Далее необходимо настроить веб-сервер для работы с новым сайтом.

Composer scripts

Приложено пару примеров скриптов для composer, запускающимся по событиям post-update и post-install.

  • Local\ComposerScript\RunMigrationsHandler - запускает миграции.

  • Local\ComposerScript\CacheWarmerHandler - убивает и прогревает кэш.

Добавить в секцию scripts файла composer.json:

  "scripts": {
    "post-update-cmd": [
      "Local\\ComposerScript\\RunMigrationsHandler::doInstall",
      "Local\\ComposerScript\\CacheWarmerHandler::doInstall"
    ],
    "post-install-cmd": [
      "Local\\ComposerScript\\RunMigrationsHandler::doInstall",
      "Local\\ComposerScript\\CacheWarmerHandler::doInstall"
    ],
    "cache:warm": "Local\\ComposerScript\\CacheWarmerHandler::doInstall",
    "migrations:run": "Local\\ComposerScript\\RunMigrationsHandler::doInstall"
  },

Появятся команды:

composer cache:warm

и

composer migrations:run

Прочее

  • Пришлось залочить пакет psr/container на версию 1.0. Без этого ставился 1.1.1 (по запросу Symfony DI) и конструкция падала из-за несоответствия интерфейсов.

Последствия: DI компонент пока версии 5.2, а не актуальной 5.3.

proklung/bitrix-symfony-base.git 适用场景与选型建议

proklung/bitrix-symfony-base.git 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 12, 最近一次更新时间为 2021 年 04 月 18 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「symfony」 「bitrix」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 proklung/bitrix-symfony-base.git 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 proklung/bitrix-symfony-base.git 我们能提供哪些服务?
定制开发 / 二次开发

基于 proklung/bitrix-symfony-base.git 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 12
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 12
  • Watchers: 3
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-04-18