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. Настройки модуля Module.php

  • Описание
  • Содержимое файла (проекта)
  • Содержимое файла (фреймворка / модуля)
  • Методы
    • module_name()
    • init()
    • create_app()
    • setup_context()

Описание

  • project/src/app/Module.php - это файл настроек модуля проекта.
  • project/src/modules/<modulename>/php/Module.php - это файл настроек модуля.

Содержимое файла (проекта)

Пример:

project/src/app/Module.php
<?php

namespace App;


class Module
{
    /**
     * Название модуля
     */
    public static function module_name()
    {
        return 'app';
    }
    
    /**
     * Init module
     */
    public static function init($app)
    {
        // Регистрация маршрутов
        $app->add_routes([
            \App\Routes\DefaultRoute::class, 
            \App\Routes\ScrRoute::class, 
            // ...
        ]);
    }
    
    /**
     * Создаем App
     */
    public static function create_app()
    {
        $app = new \IO\App();
        
        // Добавляем модули
        $app->add_modules([
            \IO\Module::class,
            \App\Module::class,
            // ...
        ]);
        
        $app->page_not_found = \App\Routes\DefaultRoute::class;
        
        // Инициализация
        $app->init();
        
        return $app;
    }
    
    /**
     * Setup context
     */
    public function setup_context($twig)
    {
        $twig->setContext('app_platform', ($_COOKIE['platform'] ?? ''));
        $twig->setContext('app_version', ($_COOKIE['platform_version'] ?? 'noapp'));
    }
}

Методы, обязательные для объявления:

  • module_name().
  • init().
  • create_app().
  • setup_context().

Содержимое файла (фреймворка / модуля)

Пример:

project/src/modules/MODULE_NAME/php/Module.php
<?php

namespace IO; // в каждом модуле свой namespace, определяемый через composer.json


class Module
{
    /**
     * Название модуля
     */
    public static function module_name()
    {
        return 'io7'; // в каждом модуле свое название
    }
    
    /**
     * Init module
     */
    public static function init($app)
    {
        // Регистрация маршрутов
        $app->add_routes([
            \App\Routes\DefaultRoute::class, 
            \App\Routes\ScrRoute::class, 
            // ...
        ]);
    }
    
    public function setup_context($twig)
    {
        //$twig->setContext('example_var', 'example_value');
    }
}

Методы, обязательные для объявления:

  • module_name().
  • init().

Методы, необязательные для объявления:

  • setup_context().

Методы

module_name()

Метод, возвращающий название модуля.

Если это проект, название модуля всегда app.

/**
 * Название модуля
 */
public static function module_name()
{
    return 'app';
}

init()

Метод регистрации маршрутов проекта / модуля.

/**
 * Init module
 */
public static function init($app)
{
    // Регистрация маршрутов
    $app->add_routes([
        \App\Routes\DefaultRoute::class, 
        \App\Routes\ScrRoute::class, 
        // ...
    ]);
}

Обязательные для регистрации классы маршрутов:

  • \App\Routes\DefaultRoute::class - маршрут по умолчанию, описывает как минимум маршрут главной страницы / и страницы 404 ошибки (маршрут не найден).
  • \App\Routes\ScrRoute::class - маршрут для тестов и экспериментов (/scr).

create_app()

Метод инициализации проекта.

Здесь подключаются модули проекта, а также устанавливается route для несуществующих маршрутов.

/**
 * Создаем App
 */
public static function create_app()
{
    $app = new \IO\App();
    
    // Добавляем модули
    $app->add_modules([
        \IO\Module::class,
        \App\Module::class,
        // ...
    ]);
    
    $app->page_not_found = \App\Routes\DefaultRoute::class;
    
    // Инициализация
    $app->init();
    
    return $app;
}

setup_context()

Метод установки twig контекста.

/**
 * Setup context
 */
public function setup_context($twig)
{
    $twig->setContext('app_platform', ($_COOKIE['platform'] ?? ''));
    $twig->setContext('app_version', ($_COOKIE['platform_version'] ?? 'noapp'));
}
Prev
Настройки проекта Conf.php
Next
Настройки composer