> For the complete documentation index, see [llms.txt](https://alonity.gitbook.io/alonity/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alonity.gitbook.io/alonity/components/config.md).

# Config

**Package:** [alonity\config\Config](https://github.com/alonity/Config)

## Ручная установка

```
composer require alonity/config
```

## Использование

Компонент основан на статическом подходе, по этому ко всем методам необходимо обращаться соответственно.

### Обращение к конфигам

Для получения полного конфига, используйте метод get. Где в качестве первого параметра передается имя конфига без расширения, а в качестве второго - директория.

По умолчанию, используется директория по умолчанию - "../../../../app"

```php
$myConfig = Config::get('MyConfig');
```

### Предзагрузка конфигов

Если вы обращаетесь к конфигу через метод get в первый раз, то конфиг будет загружен в память автоматически, однако вы можете произвести предварительную загрузку с помощью метода loader, который принимает в качестве параметра массив имен конфигов или имен и путей. Если пути не заданы, то используется путь по умолчанию из свойства $path.

```php
Config::loader([
    'MyConfig',
    'MyOtherConfig' => '../../../path/to/configs',
]);

$myConfig = Config::get('MyOtherConfig'); // Загрузки не произойдет
```

### Обращение к параметрам

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

*Обратите внимание, что если вы обращаетесь к конфигу впервые, то загрузка произойдет из директории заданной по умолчанию. Чтобы это изменить, измените директорию по умолчанию или произведите загрузку конфига через метод loader или через get*

```php
$example = Config::get('MyConfig', 'example');
```

Если вы используете многомерные массивы, то обратитесь к значению можно через разделитель "."

```php
$deep = Config::get('MyConfig', 'example.deep.deep'); // ['example']['deep']['depp']
```

### Выставление значений

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

В качестве первого параметра указывается имя конфига, в качестве второго - ключ, а в качестве третьего - значение.

```php
Config::setValue('MyConfig', 'example');
```

Если вам необходимо полностью установить значение всего конфига, используйте метод set

```php
Config::set('MyConfig', [
    'param1' => 'value1',
    'param2' => 'value2',
    'param3' => [
        'deep' => 'value3'
    ],
]);
```

### Удаление значений

Для удаления значения из конфига, используйте метод unsetValue

```php
Config::unsetValue('MyConfig', 'param3.deep');
```

Если вам необходимо полностью выгрузить конфиг из памяти, обратитесь к методу unset.

*Обратите внимание, что после выгрузки, вы по прежнему сможете обратитесь к конфигу через методы loader, get и getValue*

```php
Config::unset('MyConfig');
```

### Удаление конфига

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

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

```php
Config::delete('MyConfig');
```

### Сохранение конфига

Методы set, setValue, unset, unsetValue задают значению в памяти, но не сохраняют их в файлах конфигов. Это означает, что после перезагрузки страницы, значения будут сброшены к исходным. Чтобы этого не произошло, необходимо сохранить конфиг с помощью метода save, который принимает в качестве первого параметра имя конфига, а в качестве второго - директорию конфига. Если директория не задана, используется путь по умолчанию.

```php
if(!Config::save('MyConfig')){
    echo 'Something was wrong. Check file permissions';
}
```
