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: файл базового класса apiCoreApi, без привязки к class.io7/php/Api/CrudApi.php: файл базового класса apiCoreApi, с привязкой к 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 класса modelIOModel4(для старых проектов).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.