Giter VIP home page Giter VIP logo

bitrix-project-template's Introduction

Bitrix проект с использованием composer и git

Вашему вниманию представлен достаточно удачный вариант организации битрикс проекта с использованием git и composer. Используя данную структуру из проекта в проект Вы облегчите жизнь себе и другим разработчикам.

Использование репозитория как шаблона в новом проекте

  1. Клонируем или сохраняем репозиторий в любую дирректорию
  2. Удаляем папку .git и файл README.md
  3. Копируем содержимое дирректории в проект
  4. Вносим нужные изменения в файл composer.json и выполняем composer install из папки local

Использование репозитория как шаблона в существующем проекте

Здесь все как и в новом проекте, но нужно помнить о файле init.php, и если он существует, то дополнить его содержимое файлом из репозитория. Настоятельно рекомендую вынести все содержимое старого init.php в хелперы, это повысит читаемость кода.
Если есть возможность, то желательно перенести все локальные модули и шаблоны в папку local, это упростит поддержку проекта и настройку git.
В случае, когда перенести код в local нет возможности, то нужно исправить .gitignore, добавив в него код который вы хотите отслеживать. Примерно так:

/bitrix/*  
!/bitrix/templates
!/bitrix/php_interface
/bitrix/php_interface/dbconn.php

Эти строки заставят git игнорировать файлы ядра и прочие файлы, которые не касаются шаблонов и папки php_interface.

Git, .gitignore

Файл .gitignore в этом репозитории лаконичен и понятен, но обычно требует небольшого дополнения в зависимости от проекта. Один из вариантов рассмотрен выше.
Не добавляйте код ядра в репозиторий! Если репозиторий весит больше 50 мегабайт это повод задуматься о том, что там что-то лишнее.

Папка local

Хотя этому "нововведению" уже более 5 лет, многие разработчики продолжают упорно не замечать папку local. Хранение вашего кода в local упростит навигацию по коду, обеспечит порядок и облегчит работу с системами контроля версий.
Подробно можно прочитать вот здесь.

Composer, автозагрузка классов, хелеперы

Зачем мне composer в битриксе?

Как минимум для реализации адекватной автозагрузки классов. Даже если нет надобности в сторонних пакетах, всегда существуют классы-хелперы, обработчики событий и прочий код, который неплохо было бы организовать. Но это всего лишь небольшой бонус к мощному менеджеру пакетов с помощью которого, в пару действий, можно установить и поддерживать в актуальном состоянии любую библиотеку. При желании можно интегрировать в битрикс любой фреймворк. Например компонтенты symfony:

Организация кода в проекте

  • local/php_interface/project - папка с классами касающимися только конкретно этого проекта
  • local/php_interface/project/events - классы обработчиков событий
  • local/php_interface/project/helpers - классы хелперов проекта
  • local/php_interface/project/helpers/Def.php - класс с константами проекта, очень полезно определять их в одном месте
  • local/php_interface/project/helpers/TemplateHelper.php - класс хелпера шаблона (шаблонов)

Если есть код, который вы перемещаете из проекта в проект, то его лучше вынести в отдельную папку c именем вендора внутри php_interface. Здесь для примера это папка wn.

composer.json и автозагрузка

Для того, чтобы composer знал о ваших классах, нужно прописать пути к ним и их пространства имен в composer.json.

"autoload": {
    "psr-4": {
        "Project\\Helpers\\": "php_interface/project/helpers",
        "Project\\Events\\": "php_interface/project/events",
        "Wn\\Helpers\\": "php_interface/wn/helpers"
    }
}

После этого требуется обновить загрузчик коммандой composer dump-autoload --optimize. Для того, чтобы автозагрузчик работал, нужно включить файл autoload.php в наш init.php:

if(!file_exists(__DIR__.'/../vendor/autoload.php')){
    throw new \Bitrix\Main\Config\ConfigurationException('Use "composer install" in the /local folder');
}
require(__DIR__.'/../vendor/autoload.php');

Код выше сгенерирует исключение, если вы забыли запустить composer install.

Миграции

Если вы пришли в битрикс из мира фреймворков типа yii или symfony то поддержка баз данных всех копий проекта в актуальном состоянии может повергнуть вас в шок. Но к счастью есть несколько проектов которые частично решают эту проблему.
Я предлагаю использовать этот вариант. Он использует модули symfony, понятен, расширяем и прост. В наш composer.json он уже включен:

"require": {
    "arrilot/bitrix-migrations": "^2.3"
}

bitrix-project-template's People

Contributors

mihaylichenko avatar senyawtf avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

max-kmb

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.