BMC IO DocsBMC IO Docs
IO v6
IO v7
Notes
Docs
IO v6
IO v7
Notes
Docs
  • IO Framework v7

    • О фреймворке
    • Что изменилось в 7 версии
    • Структура
    • Доступ к участкам проекта
    • Разворачивание нового проекта
  • Backend

    • Настройки проекта Conf.php
    • Настройки модуля Module.php
    • Настройки composer
    • Функции фреймворка
    • Глобальные переменные
    • Константы фреймворка
    • Event класс
    • IOCore класс
    • Route и работа с ними
    • Class и работа с ними
    • Api model и работа с ними
    • Template и работа с ними
    • Мультиязычность и словарь фраз
    • Bin скрипты и работа с ними
    • Cron скрипты и работа с ними
    • $ioSession и работа с сессией
    • $ioHash и работа с кешем
    • $iodb и работа с базой данных
  • Frontend

    • Twig шаблонизатор и работа с ним
    • Twig функции
    • Twig фильтры
    • Twig контекст
    • Настройка NPM
    • Сборка Frontend составляющей
    • Обращение к Api через JS

IO v7. Структура

  • Структура проекта
  • Структура фреймворка
  • Структура модуля

Проект состоит из модулей. Фреймворк также подключается как модуль.

Если привести в пример любой проект сервиса, то в нем также содержится модуль этого же сервиса, чтобы его можно было использовать в других проектах, которые будут "собирательными" (если проект не отвечает за сервис, а является комплексом сервисов, под нужды конкретного клиента).

Проекты оборачиваются в среду Docker и запускаются на сервере.
Разработка ведется там же, так как поднять подобную среду на локальном компьютере будет затруднительно, не развернув на нем всю архитектуру платформы.

Структура проекта

project/src
├── app
│   ├── Api
│   │   ├── TestApi.php
│   │   └── UserApi.php
│   ├── Classes
│   │   └── User.php
│   ├── Crons
│   │   └── ExampleCron.php
│   ├── Routes
│   │   ├── DefaultRoute.php
│   │   └── ScrRoute.php
│   ├── Templates
│   │   └── index.twig
│   ├── Vue
│   │   ├── assets
│   │   ├── components
│   │   ├── css
│   │   ├── locales
│   │   │   ├── en.json
│   │   │   ├── kz.json
│   │   │   └── ru.json
│   │   ├── models
│   │   │   ├── AppModel.js
│   │   │   ├── IFrameModel.js
│   │   │   └── NoticeModel.js
│   │   ├── pages
│   │   │   ├── Main.vue
│   │   │   └── PageNotFound.vue
│   │   ├── plugins
│   │   │   └── font-awesome.js
│   │   ├── App.vue
│   │   ├── axios.js
│   │   ├── components.js
│   │   ├── main.js
│   │   ├── main.scss
│   │   ├── mixin.js
│   │   ├── router.js
│   │   └── store.js
│   ├── Conf.php
│   ├── Module.php
│   └── Twig_Functions.php
├── bin
│   └── example.php
├── modules
│   └── io7
├── node_modules
├── public
│   ├── assets
│   ├── files
│   ├── js
│   ├── bundle.js
│   ├── bundle.js.LICENSE.txt
│   ├── bundle.js.map
│   ├── checkserver.php
│   └── index.php
├── vendor
├── .env
├── babel.config.js
├── composer.json
├── cron.php
├── jest.config.js
├── LICENSE
├── nginx.conf
├── package.json
├── test.js
├── tsconfig.json
└── webpack.config.js
  • project/src/app: главная папка, где хранятся функциональные файлы проекта. Папка, которая содержит всю логику проекта.
  • project/src/app/Api: папка, содержащая файлы логики проекта / api.
  • project/src/app/Api/TestApi.php: файл примера api.
  • project/src/app/Api/UserApi.php: файл api для работы с пользователями.
  • project/src/app/Classes: папка, содержащая классы для работы с базой данных.
  • project/src/app/Classes/User.php: файл class для работы с пользователями.
  • project/src/app/Crons: папка, содержащая cron скрипты.
  • project/src/app/Crons/ExampleCron.php: файл примера cron скрипта.
  • project/src/app/Routes: папка, содержащая файлы маршрутов.
  • project/src/app/Routes/DefaultRoute.php: файл базового маршрута. По умолчанию, содержит маршрут главной страницы, и страницы ошибки "404 страница не найдена".
  • project/src/app/Routes/ScrRoute.php: файл маршрута для отладки и тестов /scr.
  • project/src/app/Templates: папка, содержащая файлы интерфейсов UI (шаблонов). Папка, содержащая html шаблоны на основе шаблонизатора Twig.
  • project/src/app/Templates/index.twig: шаблон главной страницы проекта.
  • project/src/app/Vue: папка с Frontend составляющим.
  • project/src/app/Vue/assets: папка с asset файлами.
  • project/src/app/Vue/components: папка с vue компонентами.
  • project/src/app/Vue/css: папка с css файлами.
  • project/src/app/Vue/locales: папка, содержащая тексты переводов (файлы-словари фраз) на различные языки.
  • project/src/app/Vue/locales/en.json: файл-словарь фраз для языка EN.
  • project/src/app/Vue/locales/kz.json: файл-словарь фраз для языка KZ.
  • project/src/app/Vue/locales/ru.json: файл-словарь фраз для языка RU.
  • project/src/app/Vue/models: папка с файлами моделей.
  • project/src/app/Vue/models/AppModel.js: файл базовой модели проекта.
  • project/src/app/Vue/models/IFrameModel.js: файл модели для работы с iframe, чтобы открывать страницы модулей.
  • project/src/app/Vue/models/NoticeModel.js: файл модели уведомлений.
  • project/src/app/Vue/pages: папка с файлами страниц.
  • project/src/app/Vue/pages/Main.vue: файл шаблона главной страницы проекта (может быть заменен на любой другой).
  • project/src/app/Vue/pages/PageNotFound.vue: файл шаблона страницы "404 - страница не найдена".
  • project/src/app/Vue/plugins: папка с пользовательскими плагинами.
  • project/src/app/Vue/plugins/font-awesome.js: файл подключения иконок FontAwesome.
  • project/src/app/Vue/App.vue: файл базового компонента.
  • project/src/app/Vue/axios.js: файл настроек axios.
  • project/src/app/Vue/components.js: файл списка всех подключаемых компонентов.
  • project/src/app/Vue/main.js: файл базовых настроек vue.
  • project/src/app/Vue/main.scss: файл основных scss стилей модуля.
  • project/src/app/Vue/mixin.js: файл миксина фреймворка.
  • project/src/app/Vue/router.js: файл настроек vue-router.
  • project/src/app/Vue/store.js: файл настроек vue-store.
  • project/src/app/Conf.php: файл персональных настроек, функций и констант проекта. Подробнее
  • project/src/app/Module.php: файл настроек модуля. Подробнее
  • project/src/app/Twig_Functions.php: файл базовых кастомных функций и фильтров фреймворка для twig.
  • project/src/bin: папка, содержащая bin скрипты.
  • project/src/bin/example.php: файл примера bin скрипта.
  • project/src/modules: папка с модулями проекта.
  • project/src/modules/io7: папка модуля фреймворка.
  • project/src/node_modules: папка, в которой хранятся все установленные зависимости, указанные в package.json.
  • project/src/public: папка со скомпилированными файлами проекта.
  • project/src/public/assets: папка с asset файлами.
  • project/src/public/files: папка с файлами проекта.
  • project/src/public/js: папка с js скриптами проекта.
  • project/src/public/bundle.js: скомпилированный js файл vue.
  • project/src/public/bundle.js.LICENSE.txt: текст лицензии скомпилированного js файла vue.
  • project/src/public/bundle.js.map: файл карты скомпилированного js файл vue.
  • project/src/public/checkserver.php: файл, отображающий название проекта (ранее использовался для проверки на наличие на сервере установленных библиотек, необходимых для работы проекта).
  • project/src/public/index.php: центральный файл, который отвечает за запуск проекта. Он является вратами. Через него проходят все запросы, которые отправляются на сайт.
  • project/src/vendor: папка создаётся при установке зависимостей через Composer, хранит библиотеки, установленные через composer.json.
  • project/src/.env: конфигурационный файл, используемый для хранения переменных окружения.
  • project/src/babel.config.js: файл настроек babel.
  • project/src/composer.json: конфигурационный файл для Composer, менеджера зависимостей в PHP. Он используется для описания зависимостей проекта, автозагрузки классов и других параметров.
  • project/src/cron.php: файл, который запускает cron скрипты. Файл, обслуживающий автоматически выполняемые скрипты, которые выполняются через определенные промежутки времени. Данный файл запускается каждую минуту и в зависимости от настроек таблицы cron запускает скрипт.
  • project/src/jest.config.js: файл настроек jest.
  • project/src/LICENSE: файл с текстом лицензии на проект.
  • project/src/nginx.conf: файл конфигурации проекта для nginx.
  • project/src/package.json: конфигурационный файл для npm, хранящий информацию о проекте, его зависимостях, скриптах и других настройках.
  • project/src/test.js: файл для отладки и тестов.
  • project/src/tsconfig.json: файл настроек typescript.
  • project/src/webpack.config.js: файл настроек webpack.

Структура фреймворка

project/src/modules/io7
├── db
│   └── tables.sql
├── php
│   ├── Api
│   │   ├── ApiResult.php
│   │   ├── CoreApi.php
│   │   ├── CrudApi.php
│   │   └── SessionApi.php
│   ├── Classes
│   │   ├── Unit.php
│   │   └── UnitType.php
│   ├── Legacy
│   │   ├── db.mysql.php
│   │   ├── ioform.php
│   │   └── mvc.model4.php
│   ├── Routes
│   │   ├── ApiRoute.php
│   │   └── GateRoute.php
│   ├── Templates
│   │   ├── email.twig
│   │   └── index.twig
│   ├── App.php
│   ├── Const.php
│   ├── CronTemplate.php
│   ├── Event.php
│   ├── Functions.php
│   ├── Hash.php
│   ├── Init.php
│   ├── IOCore.php
│   ├── JWT.php
│   ├── Module.php
│   ├── MySQL_Class.php
│   ├── MySQL_PDO.php
│   ├── Route.php
│   ├── Session.php
│   ├── Twig.php
│   └── Twig_Functions.php
├── vue
│   ├── components
│   ├── models
│   ├── components.js
│   ├── core.scss
│   ├── lib.js
│   ├── mixin.js
│   ├── package.json
│   └── store.js
├── .hgignore
└── LICENSE
  • io7/db: папка с SQL дампами базовых таблиц фреймворка.
  • io7/php: папка с Backend составляющим.
  • io7/php/Api: папка, содержащая файлы логики проекта / api.
  • io7/php/Api/ApiResult.php: файл класса результата api.
  • io7/php/Api/CoreApi.php: файл базового класса api CoreApi, без привязки к class.
  • io7/php/Api/CrudApi.php: файл базового класса api CoreApi, с привязкой к class.
  • io7/php/Api/SessionApi.php: файл класса api для работы с сессией.
  • io7/php/Classes: папка, содержащая классы для работы с базой данных.
  • io7/php/Classes/Unit.php: файл класса единиц измерения.
  • io7/php/Classes/UnitType.php: файл класса типов единиц измерения.
  • io7/php/Legacy: папка с legacy составляющими.
  • io7/php/Legacy/db.mysql.php: файл базового IO6 класса class для работы с БД MySQL.
  • io7/php/Legacy/ioform.php: файл IO6 класса генератора HTML форм через model (для очень старых проектов).
  • io7/php/Legacy/mvc.model4.php: файл базового IO6 класса model IOModel4 (для старых проектов).
  • io7/php/Routes: папка, содержащая файлы маршрутов.
  • io7/php/Routes/ApiRoute.php: файл маршрута /entity/ для работы "общалки" с api.
  • io7/php/Routes/GateRoute.php: файл маршрута /gate/ для работы "общалки" с class.
  • io7/php/Templates: папка, содержащая файлы интерфейсов UI. Папка, содержащая html шаблоны на основе шаблонизатора Twig.
  • io7/php/Templates/email.twig: шаблон для email сообщений.
  • io7/php/Templates/index.twig: шаблон главной страницы проекта.
  • io7/php/App.php: файл класса проекта на фреймворке App.
  • io7/php/Const.php: файл объявления большинства глобальных переменных, констант фреймворка, путей к проектам, IP адресов серверов.
  • io7/php/CronTemplate.php: файл базового класса cron.
  • io7/php/Event.php: файл класса логирования фреймворка Event.
  • io7/php/Functions.php: файл списка PHP функций фреймворка.
  • io7/php/Hash.php: файл класса IOHash для работы с кешем.
  • io7/php/Init.php: файл подключения основных классов фреймворка.
  • io7/php/IOCore.php: файл класса ядра фреймворка IOCore.
  • io7/php/JWT.php: файл класса JWTToken для работы с JWT токенами.
  • io7/php/Module.php: файл настроек модуля.
  • io7/php/MySQL_Class.php: файл базового класса class для работы с БД MySQL.
  • io7/php/MySQL_PDO.php: файл класса IO_MYSQL_PDO для работы с базой данных через переменную $iodb (для драйвера php_pdo).
  • io7/php/Route.php: файл базового класса маршрутов.
  • io7/php/Session.php: файл базового класса сессии.
  • io7/php/tables.sql: дамп базовых таблиц MySQL для проекта.
  • io7/php/Twig.php: файл инифиализации twig.
  • io7/php/Twig_Functions.php: файл базовых кастомных функций и фильтров фреймворка для twig.
  • io7/vue: папка с Frontend составляющим.
  • io7/vue/components: папка с vue компонентами.
  • io7/vue/models: папка с файлами моделей.
  • io7/vue/components.js: файл списка всех подключаемых компонентов.
  • io7/vue/core.scss: файл основных scss стилей фреймворка.
  • io7/vue/lib.js: файл с функциями фреймворка.
  • io7/vue/mixin.js: файл миксина фреймворка.
  • io7/vue/package.json: конфигурационный файл для npm, хранящий информацию о проекте, его зависимостях, скриптах и других настройках.
  • io7/.hgignore: файл используется в системе контроля версий Mercurial (hg) для указания файлов и директорий, которые должны игнорироваться при отслеживании изменений в репозитории.
  • io7/LICENSE: файл с текстом лицензии на фреймворк.

Структура модуля

project/src/modules/trade
├── php
│   ├── Api
│   ├── Classes
│   ├── Routes
│   ├── Templates
│   └── Module.php
├── vue
│   ├── assets
│   ├── components
│   ├── css
│   ├── models
│   ├── pages
│   ├── components.js
│   ├── main.scss
│   ├── package.json
└── .hgignore
  • trade/php: папка с Backend составляющим.
  • trade/php/Api: папка, содержащая файлы логики проекта / api.
  • trade/php/Classes: папка, содержащая классы для работы с базой данных.
  • trade/php/Routes: папка, содержащая файлы маршрутов.
  • trade/php/Templates: папка, содержащая файлы интерфейсов UI. Папка, содержащая html шаблоны на основе шаблонизатора Twig.
  • trade/php/Module.php: файл настроек модуля.
  • trade/vue: папка с Frontend составляющим.
  • trade/vue/assets: папка с asset файлами.
  • trade/vue/components: папка с vue компонентами.
  • trade/vue/css: папка с css файлами.
  • trade/vue/models: папка с файлами моделей.
  • trade/vue/pages: папка с файлами страниц.
  • trade/vue/components.js: файл списка всех подключаемых компонентов.
  • trade/vue/main.scss: файл основных scss стилей модуля.
  • trade/vue/package.json: конфигурационный файл для npm, хранящий информацию о проекте, его зависимостях, скриптах и других настройках.
  • trade/.hgignore: файл используется в системе контроля версий Mercurial (hg) для указания файлов и директорий, которые должны игнорироваться при отслеживании изменений в репозитории.
  • trade/LICENSE: файл с текстом лицензии на модуль.

Инфо

Модули нужны, чтобы к примеру trade можно было использоват локально в каждом проекте. Например, рынки, cms, crm.

Смысл в том, чтобы данные должны были быть в локальной базе данных. Например, в интернет магазине, данные о товаре берутся из базы CMS. А синхронизация с trade, рынком или CMS идёт через API.

Prev
Что изменилось в 7 версии
Next
Доступ к участкам проекта