Конфигурационные файлы

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

Конфигурационные файлы должны храниться в поддиректории приложения 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' и т. д.

Пример

<?php

return array(
    'myapp' => 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',
        ),
    ),
);

Формировать такой файл вручную не нужно. Удобнее его сгенерировать его консольной командой из уже существующих таблиц, которые вы создали для разработки приложения средствами СУБД. Если структура таблиц изменилась в ходе разработки, обновлять этот файл тоже можно с помощью консольной команды.

routing.php

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

Пример

<?php

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

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

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, или если в бекенде приложения нужен собственный диспетчер запросов к бекенду.

Пример переопределения формата скобок (двойные вместо стандартных одинарных) для обозначения шаблонных вставок в HTML-файлах для 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');
    }
}

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

Файлы стандартной конфигурации

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

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

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

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

<?php

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

Для того чтобы считать содержимое файла, удобно использовать метод wa()->getConfig()->getConfigPath('filename.php', false, 'myapp').

В качестве аргумента $config нужно указать имя конфигурационного без расширения .php.

Пример

$default_statuses = wa()->getConfig()->getConfigPath('statuses.php', false, 'myapp');

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

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

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

Пользовательские параметры, значения которых не затрагиваются обновлениями, нужно хранить в конфигурационных файлах в директории wa-config/apps/[app_id]/. Чтобы получить путь к файлу в этой директории, используйте метод wa()->getConfig()->getConfigPath('filename.php', true, 'myapp').

Пример

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

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