Download the PHP package chillerlan/php-settings-container without Composer
On this page you can find all versions of the php package chillerlan/php-settings-container. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download chillerlan/php-settings-container
More information about chillerlan/php-settings-container
Files in chillerlan/php-settings-container
Package php-settings-container
Short Description A container class for immutable settings objects. Not a DI container. PHP 7.4+
License
Informations about the package php-settings-container
chillerlan/php-settings-container
A container class for settings objects - decouple configuration logic from your application! Not a DI container.
SettingsContainerInterface
provides immutable properties with magic getter & setter and some fancy.
Documentation
Installation
requires composer
composer.json (note: replace dev-main
with a version constraint, e.g. ^3.0
- see releases for valid versions)
Profit!
Usage
The SettingsContainerInterface
(wrapped inSettingsContainerAbstract
) provides plug-in functionality for immutable object properties and adds some fancy, like loading/saving JSON, arrays etc.
It takes an iterable
as the only constructor argument and calls a method with the trait's name on invocation (MyTrait::MyTrait()
) for each used trait.
A PHPStan ruleset to exclude errors generated by accessing magic properties on SettingsContainerInterface
can be found in rules-magic-access.neon
.
Simple usage
Advanced usage
API
SettingsContainerAbstract
method | return | info |
---|---|---|
__construct(iterable $properties = null) |
- | calls construct() internally after the properties have been set |
(protected) construct() |
void | calls a method with trait name as replacement constructor for each used trait |
__get(string $property) |
mixed | calls $this->{'get_'.$property}() if such a method exists |
__set(string $property, $value) |
void | calls $this->{'set_'.$property}($value) if such a method exists |
__isset(string $property) |
bool | |
__unset(string $property) |
void | |
__toString() |
string | a JSON string |
toArray() |
array | |
fromIterable(iterable $properties) |
SettingsContainerInterface |
|
toJSON(int $jsonOptions = null) |
string | accepts JSON options constants |
fromJSON(string $json) |
SettingsContainerInterface |
|
jsonSerialize() |
mixed | implements the JsonSerializable interface |
serialize() |
string | implements the Serializable interface |
unserialize(string $data) |
void | implements the Serializable interface |
__serialize() |
array | implements the Serializable interface |
__unserialize(array $data) |
void | implements the Serializable interface |
Disclaimer
This might be either an utterly genius or completely stupid idea - you decide. However, i like it and it works. Also, this is not a dependency injection container. Stop using DI containers FFS.
All versions of php-settings-container with dependencies
ext-json Version *