PHPackages                             fi1a/config - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. fi1a/config

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

fi1a/config
===========

PHP работа с файлами конфигурации. Поддерживает файлы PHP, JSON

2.1.5(3y ago)0819MITPHPPHP ^7.3 || ^8

Since Nov 29Pushed 3y ago1 watchersCompare

[ Source](https://github.com/fi1a/config)[ Packagist](https://packagist.org/packages/fi1a/config)[ Docs](https://github.com/fi1a/config)[ RSS](/packages/fi1a-config/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (8)Versions (13)Used By (0)

PHP работа с файлами конфигураций. Поддерживает файлы в PHP и JSON форматах.
============================================================================

[](#php-работа-с-файлами-конфигураций-поддерживает-файлы-в-php-и-json-форматах)

[![Latest Version](https://camo.githubusercontent.com/9fb07cf0a9d800665dbd8dd0f21f1b53fed7df4d7de5032c9ab596bdae26c9b0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f666931612f636f6e6669673f6c6162656c3d72656c65617365)](https://packagist.org/packages/fi1a/config)[![Software License](https://camo.githubusercontent.com/6395b72c06a250beebad9211d597c081d51cf68e86f2da724ecc93f52d77f373/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f666931612f636f6e6669673f7374796c653d666c61742d737175617265)](https://github.com/fi1a/config/blob/master/LICENSE)[![PHP Version](https://camo.githubusercontent.com/45c28a0860bc444f9308d9d3bf018b8ee8266ab017e994d98506f816bae7eedc/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f666931612f636f6e6669673f7374796c653d666c61742d737175617265)](https://php.net)[![Coverage Status](https://camo.githubusercontent.com/0c967d746eb7f4fe28065a3b94d23faa207cd6f4a968535b20fce0310a87cf89/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d3130302532352d677265656e)](https://camo.githubusercontent.com/0c967d746eb7f4fe28065a3b94d23faa207cd6f4a968535b20fce0310a87cf89/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d3130302532352d677265656e)[![Total Downloads](https://camo.githubusercontent.com/b1aecb9c9a1ddc7522a0f76faecddce59edf7bef948305f516a7236a25213a6c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f666931612f636f6e6669672e7376673f7374796c653d666c61742d73717561726526636f6c6f72423d6d656469756d76696f6c6574726564)](https://packagist.org/packages/fi1a/config)[![Support mail](https://camo.githubusercontent.com/116fa0d447870a3a6c6c1f4b296c889707a6e30a69c2b28cbe8d0f6f5c3d4920/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696c2d737570706f7274253430666931612e72752d627269676874677265656e)](mailto:support@fi1a.ru)

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

Установка
---------

[](#установка)

Установить этот пакет можно как зависимость, используя Composer.

```
composer require fi1a/config
```

Пример загрузки и сохранения конфигурационного файла
----------------------------------------------------

[](#пример-загрузки-и-сохранения-конфигурационного-файла)

Объект со значениями конфигурационного файла `Fi1a\Config\ConfigValuesInterface` можно создать с помощью фабричного метода load(), в который необходимо передать объект `Fi1a\Config\Readers\ReaderInterface` для чтения из файла и `Fi1a\Config\Parsers\ParserInterface` для парсинга:

```
use Fi1a\Config\Config;
use Fi1a\Config\Parsers\PHPParser;
use Fi1a\Config\Readers\FileReader;
use Fi1a\Config\Writers\FileWriter;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$filesystem = new Filesystem(new LocalAdapter(__DIR__));
$file = $filesystem->factoryFile('./config.php');

$reader = new FileReader($file);
$writer = new FileWriter($file);

$parser = new PHPParser();

$config = Config::load($reader, $parser); // Fi1a\Config\ConfigValuesInterface

$config->get('path:to:value', true);
$config->set('path:to:value', 'value');

Config::write($config, $writer, $parser); // true
```

Пример загрузки конфигурационных файлов
---------------------------------------

[](#пример-загрузки-конфигурационных-файлов)

Значения можно получить из нескольких файлов, используя метод `Fi1a\Config\Config::batchLoad`и передав массив с объектами `Fi1a\Config\Readers\ReaderInterface` для чтения из файла и `Fi1a\Config\Parsers\ParserInterface` для парсинга:

```
use Fi1a\Config\Config;
use Fi1a\Config\Parsers\PHPParser;
use Fi1a\Config\Readers\FileReader;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$parser = new PHPParser();

$filesystem = new Filesystem(new LocalAdapter(__DIR__));

$config = Config::batchLoad([
    [
        new FileReader($filesystem->factoryFile('./config1.php')),
        $parser,
    ],
    [
        new FileReader($filesystem->factoryFile('./config2.php')),
        $parser,
    ],
    [
        new FileReader($filesystem->factoryFile('./config3.php')),
        $parser,
    ],
]); // Fi1a\Config\ConfigValuesInterface

$config->get('path:to:value', true);
```

Класс со значениями
-------------------

[](#класс-со-значениями)

Методы `Fi1a\Config\Config::load` и `Fi1a\Config\Config::batchLoad` возвращают объект `Fi1a\Config\ConfigValues`, реализующий интерфейс `Fi1a\Collection\DataType\PathAccessInterface`из пакета [fi1a/collection](https://github.com/fi1a/collection).

Данный класс позволяет получать доступ к ключам массива по пути (foo:bar:baz).

Для создания нового объекта со значениями можно использовать метод `Fi1a\Config\Config::create`:

```
use Fi1a\Config\Config;

$register = Config::create(['foo' => ['bar' => ['baz' => 1], 'qux' => 2,],]);

$register->get('foo:bar:baz'); // 1
$register->get('foo:qux'); // 2
$register->get('foo:bar:baz:bat'); // null
$register->get('foo:bar:baz:bat', false); // false

$register->has('foo:bar'); // true
$register->has('foo:bar:baz'); // true
$register->has('foo:bar:baz:bat'); // false
```

Чтение
------

[](#чтение)

За чтение конфигураций отвечают классы, реализующие интерфейс `Fi1a\Config\Readers\ReaderInterface`.

Чтение конфигурационного файла
------------------------------

[](#чтение-конфигурационного-файла)

Класс `Fi1a\Config\Readers\FileReader` осуществляет чтение кодированной строки из файла.

АргументОписаниеstring $filePathПуть к файлу```
use Fi1a\Config\Config;
use Fi1a\Config\Parsers\PHPParser;
use Fi1a\Config\Readers\FileReader;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$filesystem = new Filesystem(new LocalAdapter(__DIR__));

$reader = new FileReader($filesystem->factoryFile('./config.php'));
$parser = new PHPParser();

$config = Config::load($reader, $parser); // Fi1a\Config\ConfigValuesInterface

$config->get('path:to:value', true);
$config->set('path:to:value', 'value');
```

Чтение конфигурационных файлов из директории
--------------------------------------------

[](#чтение-конфигурационных-файлов-из-директории)

Класс `Fi1a\Config\Readers\DirectoryReader` осуществляет чтение файлов конфигураций из переданной директории по маске. Аргументы конструктора:

АргументОписаниеstring $directoryPathПуть до директорииstring $regexРегулярное выражение. Маска для имен файлов```
use Fi1a\Config\Config;
use Fi1a\Config\Parsers\PHPParser;
use Fi1a\Config\Readers\DirectoryReader;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$filesystem = new Filesystem(new LocalAdapter(__DIR__));

$reader = new DirectoryReader($filesystem->factoryFolder('.'), '/^(.+)\.config\.php$/');
$parser = new PHPParser();

$config = Config::load($reader, $parser); // Fi1a\Config\ConfigValuesInterface

$config->get('path:to:value', true);
$config->set('path:to:value', 'value');
```

Запись
------

[](#запись)

За запись конфигураций отвечают классы реализующие интерфейс `Fi1a\Config\Writers\WriterInterface`.

Запись конфигурационного файла
------------------------------

[](#запись-конфигурационного-файла)

Класс `Fi1a\Config\Writers\FileWriter` осуществляет запись кодированной строки в файл.

АргументОписаниеstring $filePathПуть для записи в файл```
use Fi1a\Config\Config;
use Fi1a\Config\Parsers\PHPParser;
use Fi1a\Config\Writers\FileWriter;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$filesystem = new Filesystem(new LocalAdapter(__DIR__));

$writer = new FileWriter($filesystem->factoryFile('./config.php'));

$parser = new PHPParser();

$config = Config::create(['foo' => 'bar', 'baz' => [1, 2, 3]]);

Config::write($config, $writer, $parser); // true
```

Кодирование
-----------

[](#кодирование)

За кодирование конфигураций отвечают классы, реализующие интерфейс `Fi1a\Config\Parsers\ParserInterface`.

Создание объекта парсера на основе типа файла
---------------------------------------------

[](#создание-объекта-парсера-на-основе-типа-файла)

Используя фабричный метод `Fi1a\Config\Parsers\Factory::byFileType` можно получить объект парсера на основе расширения файла:

```
use Fi1a\Config\Config;
use Fi1a\Config\Parsers\Factory;
use Fi1a\Config\Readers\FileReader;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$filesystem = new Filesystem(new LocalAdapter(__DIR__));

$file = $filesystem->factoryFile('./config.json');
$reader = new FileReader($file);
$parser = Factory::byFileType($file->getPath()); // Fi1a\Config\Parsers\JSONParser

$config = Config::load($reader, $parser); // Fi1a\Config\ConfigValuesInterface

$config->get('path:to:value', true);
```

Кодирование в PHP формат
------------------------

[](#кодирование-в-php-формат)

Для кодирование в PHP формат следует использовать класс `Fi1a\Config\Parsers\PHPParser`. В конструктор можно передать в качестве аргументов следующие значения:

АргументОписаниеstring $encoding = 'UTF-8'Кодировкаbool $useShortArraySyntax = trueИспользовать короткую нотацию массивов или нетstring $indent = '4spaces'Определяет значение отступов ('4spaces', '1tab' или ваше значение)Пример:

```
use Fi1a\Config\Config;
use Fi1a\Config\Parsers\PHPParser;
use Fi1a\Config\Readers\FileReader;
use Fi1a\Config\Writers\FileWriter;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$filesystem = new Filesystem(new LocalAdapter(__DIR__));

$file = $filesystem->factoryFile('./config.php');
$reader = new FileReader($file);
$writer = new FileWriter($file);
$parser = new PHPParser('UTF-8', false, '1tab');

$config = Config::load($reader, $parser); // Fi1a\Config\ConfigValuesInterface

$config->get('path:to:value', true);
$config->set('path:to:value', 'value');

Config::write($config, $writer, $parser); // true
```

Кодирование в JSON формат
-------------------------

[](#кодирование-в-json-формат)

Для кодирование в JSON формат следует использовать класс `Fi1a\Config\Parsers\JSONParser`. В конструктор можно передать в качестве аргументов следующие значения:

АргументОписание?int $depth = nullМаксимальная глубина вложенности структуры, для которой будет производиться декодирование. По умолчанию: 512?int $flags = nullБитовая маска из [констант](https://www.php.net/manual/ru/json.constants.php).Пример:

```
use Fi1a\Config\Config;
use Fi1a\Config\Parsers\JSONParser;
use Fi1a\Config\Readers\FileReader;
use Fi1a\Filesystem\Adapters\LocalAdapter;
use Fi1a\Filesystem\Filesystem;

$filesystem = new Filesystem(new LocalAdapter(__DIR__));

$reader = new FileReader($filesystem->factoryFile('./config.json'));
$parser = new JSONParser(64, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);

$config = Config::load($reader, $parser); // Fi1a\Config\ConfigValuesInterface

$config->get('path:to:value', true);
$config->set('path:to:value', 'value');
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~7 days

Recently: every ~17 days

Total

12

Last Release

1175d ago

Major Versions

1.0.1 → 2.0.02022-12-04

### Community

Maintainers

![](https://www.gravatar.com/avatar/d4f26c1adaa632741fadf55b1328cbd22ac91282aecfae2027d105df0ddedee4?d=identicon)[fi1a](/maintainers/fi1a)

---

Tags

configjsonparserphp

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/fi1a-config/health.svg)

```
[![Health](https://phpackages.com/badges/fi1a-config/health.svg)](https://phpackages.com/packages/fi1a-config)
```

###  Alternatives

[mtdowling/jmespath.php

Declaratively specify how to extract elements from a JSON document

2.0k472.8M135](/packages/mtdowling-jmespathphp)[opis/closure

A library that can be used to serialize closures (anonymous functions) and arbitrary data.

2.6k230.0M283](/packages/opis-closure)[masterminds/html5

An HTML5 parser and serializer.

1.8k242.8M226](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k191.2M63](/packages/sabberworm-php-css-parser)[michelf/php-markdown

PHP Markdown

3.5k52.4M344](/packages/michelf-php-markdown)[jms/metadata

Class/method/property metadata management in PHP

1.8k152.8M88](/packages/jms-metadata)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
