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. Что изменилось в 7 версии

  • Изменения, в отличие от 6 версии
  • Актуальные проблемы

Изменения, в отличие от 6 версии

  • Прекращена поддержка базы данных MongoDB. Осталась только MySQL и она стала основной базой данных для проекта.
  • Переход на PHP 7.4, но в планах и на PHP 8.3.
  • Class (классы) теперь наследуются от класса IO\MySQL_Class. Именование файлов также изменилось. Файл должен начинаться с большой буквы и иметь постфикс .php (пример: Example.php). Имя класса должно быть таким же, как и название файла, без формата файла .php (пример: Example).
  • Model (модели) переименованы в Api. Поддержка обращения к моделям фреймворка ниже 7 версии осталась. Причем обращаться можно как с ключевым словом model, так и с новым api (пример: app.model.user.getData и app.api.user.getData равнозначны). Именование файлов также изменилось. Файл должен начинаться с большой буквы и иметь постфикс Api.php (пример: ExampleApi.php). Имя класса должно быть таким же, как и название файла, без формата файла .php (пример: ExampleApi). Наследование теперь происходит от класса IO\Api\CoreApi, но также класс может не наследоваться ни от какого класса (если в этом есть необходимость). Изменена переменная $result в do функциях, возвращение результата в моделях происходит другим способом. Функция rcp_rules() переименована в rules(). Функции params(), getParams(), event() удалены. Добавлены функции show_error(), show_success(), permission(), permissions(), onBefore(), onAfter(). Связывание модели с классом теперь происходит в функции struct(). В модели прописывать путь к самой себе теперь не нужно.
  • Controller (контроллеры) переименованы в Route (маршруты). Именование файлов также изменилось. Файл должен начинаться с большой буквы и иметь постфикс Route.php (пример: ExampleRoute.php). Имя класса должно быть таким же, как и название файла, без формата файла .php (пример: ExampleRoute). Наследование теперь происходит от класса IO\Route. Класс маршрута по умолчанию стал DefaultRoute вместо старого MainController. Добавлена функция routes() для регистрации маршрутов класса. Рендер twig шаблонов теперь происходит через функцию $this->render(). Функции setLayout(), renderPlain(), render() удалены. Добавлена функция actionPageNotFound(), хотя ее нужно объявлять самостоятельно в каждом проекте. action функции перестали быть статичными. Стандартное использование layout view удалено.
  • Автоматическая генерация и регистрация маршрутов была удалена. Теперь маршруты нужно регистрировать самостоятельно, но уже под любым именем и путем. Причем регистрировать нужно как сами маршруты, так и классы маршрутов. Маршруты регистрируются в классе маршрута, а классы маршрутов регистрируются в файле настроек модуля. При регистрации маршрутов можно использовать regexp выражения.
  • Классы, от которых наследуются Class, Api, Route были созданы на основе файлов из 6 версии фреймворка и были значительно переписаны.
  • Views (вьюшки) переименованы в Templates (шаблоны). Формат twig шаблонов изменен на *.twig. Обращение к template файлам теперь не через "точку" как в "общалке", а через "слэш".
  • Cron-скрипты теперь наследуются от класса IO\CronTemplate. Именование файлов также изменилось. Файл должен начинаться с большой буквы и иметь постфикс Cron.php (пример: ExampleCron.php). Имя класса должно быть таким же, как и название файла, без формата файла .php (пример: ExampleCron).
  • У классов функция dbsearch2() была заменена на search().
  • Функция xarr() была модернизирована. Из нее убрана поддержка извлечения букв из срок. Удалена функция xarrj() (так как теперь xarr() выполняет ее функции).
  • Базовый класс IOSession был изменен. Удалены устаревшие функции. Удалена переменная user, вместо нее добавлены функции получения данных пользователя.
  • Добавлена поддержка модулей.
  • Фреймворк выделен как отдельный модуль, но он обязательный.
  • Backend и Frontend были отделены путем использования Vue 3 и vue-router. Хотя первоначально страница рендерится через index.php шаблонизатором Twig, но дальше по умолчанию управление отдается vue-router. При необходимости через маршруты можно организовать рендеринг требуемых маршрутов без использования Vue 3, а через шаблонизатор Twig.
  • В связи с добавлением модулей, поддержки vue 3 и vue-router, был сильно изменен процесс разработки.
  • ...

Актуальные проблемы

  • Все еще не изменен сервис авторизации на использование JWT без cookie, что должно позволить создавать открытое API.
  • Множество привычных базовых функций из 6 версии фреймворка все еще не перенесены.
  • Не все базовые константы перенесены из 6 версии фреймворка.
  • Capsule из laravel/symfony для удобства конструирования SQL запросов не перенесен.
  • Отсутствует поддержка словарей фраз.
  • Отсутствует поддержка глобальной переменной $ioEnum.
  • Отсутствует поддержка глобальной переменной $ioLangs.
  • Отсутствует поддержка глобальной переменной $purifier.
  • Поддержка параметра ~ и !~ в функции getWhereFromFilter() класса IO_MYSQL_PDO под сомнением, нужно протестировать.
Prev
О фреймворке
Next
Структура