Конфиги приложения

Содержание...

Все конфигурационные файлы приложения находятся в каталоге lib/config/ внутри каталога приложения. Смена расположения или названия файла не допускается.

Файл app.php

Файл app.php является главным конфигурационным файлом приложения. В нём задаются название приложения, путь к иконке приложения, номер версии, префикс таблиц приложения в базе данных, признак наличия мобильной версии приложения, признак наличия фронтенда и другие параметры.

Пример файла app.php приложения Контакты:

<?php
  
return array(
    'name' => 'Contacts',
    'img' => 'img/contacts.png',
    'rights' => true,
    'version' => '0.0.1',
    'system' => true,
);

Список некоторых возможных параметров в файле app.php:

Файл db.php

В файле db.php описывается структура таблиц приложения в следующем виде:

array(
    'table1' => array(
        'field1' => array(ТИП_ПОЛЯ,  ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ),
        'field2' => array(ТИП_ПОЛЯ,  ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ),
        ...
    ),
    'table2' => array( 
      	...
    )
);

Типы полей — стандартные для MySQL int, varchar, text, datetime и т.д.

Пример (приложение «Гостевая книга 2»):

<?php

return array(
    'guestbook2' => array(
        'id' => array('int', 11, 'null' => 0, 'autoincrement' => 1),
        'contact_id' => array('int', 11, 'null' => 0, 'default' => '0'),
        'name' => array('varchar', 255, 'null' => 0, 'default' => ''),
        'text' => array('text', 'null' => 0),
        'datetime' => array('datetime', 'null' => 0),
        ':keys' => array(
            'PRIMARY' => 'id',
            'datetime' => 'datetime',
        ),
    ),
);

Сгенерировать db.php для приложения можно следующим образом:

php wa.php generateDb APP_ID
В этом случае найдутся все таблицы с названиями APP_ID или APP_ID_% (нужно быть осторожным, если у вас уже установлены какие-то плагины, т.к. в этом случае описания таблиц плагинов тоже попадут в основной db.php приложения).

Обновить db.php
php wa.php generateDb APP_ID --update
В этом случае просто обновятся описания таблиц, которые уже есть в db.php

Указать список таблиц приложения явно:
php wa.php generateDb APP_ID table1 table2 table3
В этом случае в db.php будут описания только указанных таблиц.

Для плагинов все то же самое, только указывать нужно APP_ID/PLUGIN_ID. Например:
php wa.php generateDb blog/tag blog_tag blog_post_tag
blog - это APP_ID, tag - это PLUGIN_ID; blog_tag и blog_post_tag - это список таблиц плагина

Файл routing.php

Файл routing.php задает правила маршрутизации HTTP-запросов на фронтенд внутри приложения.

Пример файла routing.php приложения Блог:

<?php

return array(
    'post/[i:id]/?' => 'frontend/post',
    'comment/add/[i:id]' => 'frontend/addComment'
    'rss/?' => 'frontend/rss',
    '' => 'frontend',
    '[s:url]/?' => 'frontend/post'
);

Подробнее о маршрутизации фронтенда см. раздел «Маршрутизация запросов на фронтенд».

Файл logs.php

Файл logs.php задает список действий пользователей приложения, записываемых в системный лог.

Пример файла logs.php приложения Стикеры:

<?php
  
return array(
    'board_add' => array(),
    'board_edit' => array(),
    'board_delete' => array(),
    'sticky_add' => array(),
    'sticky_edit' => array(),
    'sticky_move_to_board' => array(),
    'sticky_delete' => array(),
);

Подробнее см. раздел «Журнал действий пользователя».

Файл factories.php

В случаях когда для приложения требуется переопределение некоторых системных классов (например, когда в приложении используется альтернативный шаблонизатор, отличный от системного Smarty, или если в приложении бекенде реализован свой диспетчер запросов бекенда), то параметры переопределений задаются в файле factories.php.

Пример файла factories.php, переопределяющего для приложения параметры шаблонизатора Smarty (например, инструкция использования двойные фигурных скобок вместо одинарных):

<?php
  
return array(
    'view' => array('waSmarty3View', array(
        'left_delimiter' => '{{',
        'right_delimiter' => '}}',
    )),
);

Файл конфигурации расширенных прав доступа

Конфигурирование расширенных прав производится путем объявления класса, наследуемого от системного абстрактного класса waRightConfig. PHP-файл класса должен иметь имя вида {APP_ID}RightsConfig.class.php. Например, файл настройки детализированных прав в приложении guestbookguestbookRightConfig.class.php:

<?php 
  
class guestbookRightConfig extends waRightConfig
{

    public function init()
    {
      	$this->addItem('delete', 'Can delete posts', 'checkbox');
    }

}

Пользовательские конфигурационные файлы

Помимо стандартных конфигурационных файлов, ваше приложение может использовать и свои собственные — для хранения любых параметров, необходимых для работы приложения.

Широко используемый способ хранения конфигурационных данных во фреймворке — это PHP-файл, исходный код которого выполняет возврат массива значений. Такой формат позволяет легко извлечь конфигурационные данные и оперировать ими в коде приложения. Все конфигурационные файлы приложения рекомендуется хранить в директории wa-apps/APP_ID/lib/config/.

Массив — не единственный возможный способ хранения конфигурационных данных в PHP-файле. Разработчик каждого приложения может самостоятельно определять формат данных и способ их чтения. Например, содержимое конфигурационного файла может содержать класс либо результат работы функции serialize().

Допустим, для работы вашего приложения (которое используется для обработки заявок клиентов) требуются некоторые начальные данные: например, некий базовый список статусов обработки заявок (который теоретически может быть впоследствии расширен). Эти статусы будут доступны после установки приложения, чтобы оно сразу же было готово к работе и не требовало длительной настройки пользователем.

Простой пример конфигурационного файла statuses.php со списком статусов:

<?php

return array(
    'new',
    'discussion',
    'closed',
    'reopened',
    'canceled',
    'deleted',
);

Для того чтобы ваше приложение «узнало» об этом списке статусов, необходимо считать содержимое файла и присвоить элементы массива какой-то переменной. В системном классе фреймворка waAppConfig имеется удобный метод для получения абсолютного пути к конфигурационному файлу приложения по его имени — getAppConfigPath(). Чтобы воспользоваться этим методом, необходимо получить в коде приложения доступ к экземпляру класса waAppConfig, как показано ниже:

wa()->getConfig()->getAppConfigPath($config)

В качестве аргумента метод getAppConfigPath() принимает строку с именем конфигурационного PHP-файла приложения без расширения .php. Например, для получения абсолютного пути к файлу wa-apps/APP_ID/lib/config/statuses.php необходимо использовать следующий код:

wa()->getConfig()->getAppConfigPath('statuses')

Получив путь к файлу, присвоить содержимое хранящегося в нём массива данных переменной можно, например, так:

$statuses = include wa()->getConfig()->getAppConfigPath('statuses');

Пользовательская конфигурация приложения

Описанный выше способ хранения конфигурационных данных позволяет задавать некоторые статичные параметры, которые нельзя изменять при использовании приложении, т. к. такой конфигурационный файл будет перезаписан при установке обновлений. Для сохранения пользовательских параметров удобно использовать конфигурационные файлы, содержимое которых не затрагивается обновлениями. Такие файлы следует сохранять в директории wa-config/apps/APP_ID/. Для получения пути к этой директории для каждого приложения необходимо использовать метод getConfigPath() системного класса waSystemConfig, например, вот так:

$config_file_path = wa()->getConfig()->getConfigPath('userconfig.php', true, 'myapp');

Такой код вернет путь к файлу wa-config/apps/myapp/userconfig.php.