Настройка

Оглавление

1. Введение
2. Список настроек
3. Окружение
4. Базовые настройки
5. Изменение настроек



Введение #
К оглавлению

Фреймворк готов к эксплуатации без единой конфиги. По умолчанию в нем установлены самые популярные настройки.

Однако, вместе с тем, он имеет достаточно большое количество опций. Настраивать фреймворк можно в двух уровнях. На уровне приложения, и на уровне веб-директории. Приоритет снизу вверх.

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

Настройки приложения тоже перезапишут установки фреймворка по умолчанию.

Конфиги - это обычные php-файлы, возвращающие массив.

1
2
3
4
5
6
7
<?php 

    
return [ 

            
// Здесь настройки в виде ключ => значение  
    
];




Размещать конфигурационные файлы, а также давать им названия можно где угодно и как угодно. Главное «скормить» их фреймворку. Эти массивы должны передаваться аргументами в метод инициализации фреймворка. Подробнее об этом в разделе "Первый старт"

Сами настройки - это пара "опция" => "режим".



Список настроек #
К оглавлению

На сегодняшний день доступны следующие установки (подробности в соответствующих разделах).
Первое значение по умолчанию:

1 environment [Environment] Переменные окружения
2 settings [Settings] Базовые настройки приложения
3 route_rules [Route Rules] Маршрут по умолчанию
4 default_route [Default Route] Контроллер и действие по умолчанию
5 template [Template settings] Настройка шаблонизатора
6 uri_manager [Uri and Links View] Настройки вида ссылок
7 db_command [DbCommand settings] Настройка конструктора запросов
8 errors [Errors settings] Настройки обработки ошибок
9 debug [Debug settings] Настройки дебаггинга
10 composer false|true Включает Композер
11 autoload_path Path to autoloader Путь до любого автозагрузчика
12 mysqli [Connect Data] Настройки Mysqli
13 pdo [Connect Data] Настройки PDO



Переменные кружения #
К оглавлению

Эти настройки полезны, если фреймворк используется для построения API. По умолчанию установлены следующие значения:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


    
'SERVER_PROTOCOL'      => 'HTTP/1.1',
    
'REQUEST_METHOD'       => 'GET',
    
'SCRIPT_NAME'          => '',
    
'REQUEST_URI'          => '',
    
'QUERY_STRING'         => '',
    
'SERVER_NAME'          => 'localhost',
    
'SERVER_PORT'          => 80,
    
'HTTP_HOST'            => 'localhost',
    
'HTTP_ACCEPT'          => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    
'HTTP_ACCEPT_LANGUAGE' => 'ru-ru,ru;q=0.8,en-us;q=0.6,en;q=0.4',
    
'HTTP_ACCEPT_CHARSET'  => 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
    
'HTTP_USER_AGENT'      => 'ABC Framework',
    
'REMOTE_ADDR'          => '127.0.0.1',
    
'REQUEST_TIME'         => time(),
    
'REQUEST_TIME_FLOAT'   => microtime(true),




Базовые настройки #
К оглавлению

Эти опции содержат следующие установки по умолчанию:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95


            // Мидлвары для приложения
            
'middleware' => false,
            
            
// Секция общей конфигурации
            
'settings'     => [
                    
// Название (или путь до) директории с пользовательскими скриптами  
                    
'application'     => 'App',   
                    
// Название (или путь до) директории с контроллерами  
                    
'dir_controllers' => 'Controllers',  
                    
// Название (или путь до) директории с моделями 
                    
'dir_models'      => 'Models'
                    
// Название (или путь до) директории со слоем вьюшек  
                    
'dir_views'       => 'Views',
                ],
                
            
// Маршрутизация по умолчанию
            
'route_rules' => [  
                    
'/'   => 'main/index'
            ], 
                
            
'default_route' => [
                    
'controller' => 'Main'
                    
'action'     => 'Index' 
            
],
           
            
// Вид URI в ссылках 
            
'uri_manager'  => [ 
                    
// ЧПУ (Человеко Приятный Урл)
                    
'pretty'      => true
                    
// Показать/скрыть имя скрипта
                    
'show_script' => false
                    
// HTTPS 
                    
'https'       => false
                    
// Абсолютный путь 
                    
'absolute'    => false
            ], 
            
            
// Актив-рекорд 
            
'active_record' => [
                
'camelCase' => true,
            ],
            
            
// Настройки ошибок
            
'errors' => [
                    
'error_reporting'  => E_ALL,// Общий уровень ошибок
                    
'level_500'        => E_ALL & ~E_NOTICE,// Уровень ошибок для 500
                    
'abc_404'          => true
                    
'abc_500'          => false
            ],
            
            
// Настройки дебаггинга
            
'debug' => [
                    
'language'  => 'Ru'// Язык перевода отчета об ошибках
                    
'bugsnare'  => true//Режим дебаггинга
                    
'error_reporting' => E_ALL,// Уровень ошибок для дебаггера
            
],
////////////////////////////////////////////////////////////////////
//         НАСТРОЙКИ СЕРВИСОВ            
            
            // Секция шаблонизатора
            
'template' => [
                    
// Шаблонизатор (по умолчанию встроенный)
                    
'abc_template'    => true,
                    
// Путь до каталога с шаблонами  
                    
'dir_template'    => dirname(dirname(dirname(__DIR__)))
                                       . 
ABC_DS .'www'ABC_DS .'theme'
                                       
ABC_DS .'tpl'ABC_DS
                    
// Макет (главный шаблон), если он используется
                    
'layout'          => 'index',
                    
// Расширение файлов шаблонов
                    
'ext'             => 'tpl',
                    
// Запрещает использовать PHP в шаблонах (только для встроенного)
                    
'php'             => false,
                    
// Функции, фидимые внутри шаблонизатора (только для встроенного)
                    
'functions'       => [],
            ],
         
            
// Конструктор SQL запросов
            
'db_command'    => [
                    
'driver'  => 'PDO',  // Драйвер СУБД по умолчанию
                    
'db_type' => 'Mysql' // Тип используемой СУБД
            
],
            
            
// Язык валидатора
            
'validator' => [
                
'language' => 'Ru',
            ],
            
            
// Язык майлера
            
'mailer' => [
                
'language' => 'Ru',
            ],






Изменение настроек #
К оглавлению

Если вы хотите использовать другую конфигурацию, можно изменить любую из настроек в своих конфигурационных файлах.
Допустим пользовательские скрипты потребуется расположить в папке Protected, как одно время советовал фреймворк Yii. Тогда в конфиге приложения можно сделать так:

1
2
3
4
5
6
7

    
return [
                
'settings' => [
                                 
'application'     => 'Protected'
                ],
    ]; 




Или директория с доступом по HTTP может называться по имени хоста, а не www. Тогда в конфигурационном файле сайта лучше прописать такую настройку:

1
2
3
4
5
6
7
8
9
10


    
return [
            
'template'  => [   
                  
'dir_template'    => dirname(dirname(__DIR__)) 
                                       .
'/'basename(dirname(__DIR__))
                                       .
'/theme/tpl/',
            ]
    ];




И тогда фреймворк подцепит шаблоны из директории с любым названием, а не только www..

Кроме того, можно прописывать любые свои опции в любую конфигу, и тогда их можно получить в пользовательских скриптах из контейнера. Например, нам понадобился путь до папки HTTP:

1
2
3
4
5
6
7
8
9
10
11
12


    
return [
            
'template'  => [   
                  
'dir_template'    => dirname(dirname(__DIR__)) 
                                       .
'/'basename(dirname(__DIR__))
                                       .
'/theme/tpl/',
            ],
         
// Добавляем собственную настройку   
           
'base_dir' => dirname(__DIR__),
    ];




Теперь можно получить её в любом месте вот так:

1
2
3
4


    $baseDir 
Abc::getConfig('base_dir');




Ну и остальные опции точно так же. Хоть все вместе, хоть по отдельности.