Download the PHP package macfja/chain-config without Composer
On this page you can find all versions of the php package macfja/chain-config. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download macfja/chain-config
More information about macfja/chain-config
Files in macfja/chain-config
Package chain-config
Short Description A configuration loader, where order matters.
License MIT
Informations about the package chain-config
ChainConfig
A configuration loader, where order matters.
Features
- Multiple configuration paths
- Multiple loader
- Ini (
.ini
,.properties
) - Json (
.json
) - Neon (
.neon
) - Php (
.php
) - Xml (
.xml
) - Yaml (
.yml
,.yaml
)
- Ini (
- Handle
.dist
file - Paths order matters
- Readers order matters
- Dynamic key
- Dynamic value
The .dist
file handling
When the search for the config file to load, the library check if a .dist
exist.
If it's the case, and there is no file without the .dist
part, the file is used.
So, in this example:
test1.ini.dist
will be loaded,
but not test2.ini.dist
because the file test2.ini
exist.
(and it's test2.ini
that will be loaded)
Order matters
Configuration data are loaded in the order you define. Loader are used in the order you define.
Example:
If you define 02-my-main-path
to be the first path,
and 01-my-secondary-path
as the second path. If you ask of a a.*
configuration then the library will first load 02-my-main-path/a.php
and after 02-my-main-path/a.ini
.
Later loading don't override already loaded data, later loading only add missing key/value.
The order of the reader also matter. In the previous structure, if you define the Xml reader before the Ini loader, then, if you ask a b.*
config, the first file to be load is 02-my-main-path/b.xml
and after the 02-my-main-path/b.ini
file.
Dynamics data
The library expose two callback functionality. One for the key, the other for the value. Before the key is send to the library, it can be changed by one or more callback function. Same thing for the value, just before returning it, the library will send the value to all registered callback.
This can be useful for change a key or a value depending on another configuration or an environment depends variable. See example below
Installation
The simplest way to install the library is to use Composer:
Usage
Create a Config
object:
Read a configuration:
Detailed class API
Example of usage
Reader Format
More information in Readers documentation
Limitation
You can not use the directory separator (/
on Unix/Linux, \
on Windows) or the path separator (:
on Unix/Linux) in the first part of the key.
Additional Classes
You can found two class that ChainConfig use to work:
MacFJA\ChainConfig\Collection\MultiPartKeyArray
: The class that power the reading/writing of dot key access (and the dot is just an option!)MacFJA\ChainConfig\Collection\OrderedGroup
: The class that power the path grouping and ordering