PHPackages                             als/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. [Utility &amp; Helpers](/categories/utility)
4. /
5. als/config

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

als/config
==========

Config Manager Component.

1.0.0(7y ago)0127MITOpenEdge ABL

Since Feb 19Pushed 7y agoCompare

[ Source](https://github.com/parser3/als.config)[ Packagist](https://packagist.org/packages/als/config)[ Docs](https://github.com/parser3/als.config)[ RSS](/packages/als-config/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

Als/Config
==========

[](#alsconfig)

Config Manager Component.

---

Designed to simplify access to configuration data within applications. The configuration data may come from a variety of formats supporting hierarchical data storage. Currently provides adapters that read configuration data stored in INI, JSON and XML files.

---

Пример использования
--------------------

[](#пример-использования)

```
# Создаем объект класса 'Als/Config':
$config[^Als/Config::create[]]

# Читаем конфиги из файлов:
^config.read[/path/to/config_ini.ini]
^config.read[/path/to/config_xml.xml]
^config.read[/path/to/config_json.json]

# Тпереь нам доступны конфиги по ключам из названий файлов:
$ini[$config.config_ini]
$xml[$config.config_xml]
$json[$config.config_json]

# Так же при чтение файлов, мы можем указать ключ, по которому данные будут доступны:
^config.read[cache;/path/to/cache.ini]
#--> $config.cache
```

---

Параметры создания объекта
--------------------------

[](#параметры-создания-объекта)

```
# При создании объекта класса 'Als/Config', мы можем указать папку с конфигами:
$config[^Als/Config::create[
	$.root[/path/to/configs]
]]

# Теперь при чтении конфигов, нам не надо указывать полный путь к файлу с конфигом:
^config.read[database.xml]

# Так, же при создании объекта класса 'Als/Config', мы можем указать список
# конфигов, которые будут автоматически загружены во время создания экземпляра класса:
#
# Аргумент $.configs[] передается в виде хеша, в котором:
#  'ключ'     - это ключ по которому будут доступны данные конфига в объекте класса
#  'значение' - путь к файлу с конфигурационными данными
$config[^Als/Config::create[
	$.configs[
		$.cache[cache.ini]
		$.database[database.xml]
	]
]]
```

---

Методы доступа к конфигурационным данным
----------------------------------------

[](#методы-доступа-к-конфигурационным-данным)

```
# Создаем объект класса 'Als/Config':
$config[^Als/Config::create[]]

# Читам конфигурационные данные из файла 'database.json', со следующим содержимым:
#  {
#    "debug": true,
#    "cache": {
#       "path": "/path/to/database/cache"
#    }
#  }
^config.read[db;/path/to/database.json]

# Теперь мы можем получать конфигурационные данные, обращаясь к объекту '$config', как к хешу:
$debug($config.db.debug)

# Так же мы можем воспользоваться методом '^get[]' (для разделения вложенности используются точки):
$path[^config.get[db.cache.path]]

# Если вызвать метод '^get[]' без аргументов, то он вернёт хеш со всеми ранее загруженными конфигами:
$configs[^config.get[]]
```

---

Примеры конфигов
----------------

[](#примеры-конфигов)

### Формат .ini

[](#формат-ini)

```
; некоторый комментарий
# комментарий в стиле Unix

# Значения без секции
param1=value1 ; иногда допускается комментарий к отдельному параметру
param2=value2

[section]
; комментарий о разделе
param1=section.value1 # иногда допускается комментарий к отдельному параметру
param2=section.value2

[section.subsection]
param1=section.subsection.value1
param2=section.subsection.value2

; иногда позволяется перечислять несколько значений через запятую
[section.subsection2]
param1=section.subsection2.value1
param2=section.subsection2.value2

[section.subsection2.subsection3]
param1=section.subsection2.subsection3.value1
param2=section.subsection2.subsection3.value2

; Иногда значения отсутствуют
[section.subsection2.subsection4]

[section.subsection2.subsection5]
param1=
param2=
```

### Формат .xml

[](#формат-xml)

```

    value1
    value2

        section.value1
        section.value2

            section.subsection.value1
            section.subsection.value2

            section.subsection2.value1
            section.subsection2.value2

                section.subsection2.subsection3.value1
                section.subsection2.subsection3.value2

```

### Формат .json

[](#формат-json)

```
{
  "param1": "value1",
  "param2": "value2",

  "section": {
    "param1": "section.value1",
    "param2": "section.value2",

    "subsection": {
      "param1": "section.subsection.value1",
      "param2": "section.subsection.value2"
    },

    "subsection2": {
      "param1": "section.subsection2.value1",
      "param2": "section.subsection2.value2",

      "subsection3": {
        "param1": "section.subsection2.subsection3.value1",
        "param2": "section.subsection2.subsection3.value2"
      },

      "subsection4": {},

      "subsection5": {
        "param1": "",
        "param2": ""
      }
    }
  }
}
```

---

TODO
----

[](#todo)

- Написать метод "@parse\[\]", что бы можно было нетолько загружать данные из файлов.
- Написать метод "@save\[\]", что бы можно было сохранять конфиги.
- Парсинг аттрибутов в XML, сейчас конфиги формата '.xml' парсятся без учете аттрибутов.

---

References
----------

[](#references)

- Questions to Leonid Knyazev  |
- Bug reports and Feature requests to Issues.

---

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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

Unknown

Total

1

Last Release

2645d ago

### Community

Maintainers

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

---

Top Contributors

[![leokn](https://avatars.githubusercontent.com/u/398527?v=4)](https://github.com/leokn "leokn (19 commits)")

---

Tags

alspackageparser3configals

### Embed Badge

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

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

###  Alternatives

[symfony/options-resolver

Provides an improved replacement for the array\_replace PHP function

3.2k493.9M1.6k](/packages/symfony-options-resolver)[league/config

Define configuration arrays with strict schemas and access values with dot notation

564302.2M24](/packages/league-config)[dflydev/dot-access-configuration

Given a deep data structure representing a configuration, access configuration by dot notation.

13414.5M4](/packages/dflydev-dot-access-configuration)[akaunting/laravel-setting

Persistent settings package for Laravel

495805.1k7](/packages/akaunting-laravel-setting)[m1/env

Env is a lightweight library bringing .env file parser compatibility to PHP. In short - it enables you to read .env files with PHP.

6412.0M21](/packages/m1-env)[jbzoo/data

An extended version of the ArrayObject object for working with system settings or just for working with data arrays

891.6M23](/packages/jbzoo-data)

PHPackages © 2026

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