diff --git a/src/Attribute/ConfigSection.php b/src/Attribute/ConfigSection.php new file mode 100644 index 0000000..2602552 --- /dev/null +++ b/src/Attribute/ConfigSection.php @@ -0,0 +1,14 @@ +get($id); + if (!is_array($config)) { + $config = [$config]; + } + + /** @var array $config */ + return new Config($config); + } } diff --git a/src/ConfigAwareInterface.php b/src/ConfigAwareInterface.php new file mode 100644 index 0000000..caa43aa --- /dev/null +++ b/src/ConfigAwareInterface.php @@ -0,0 +1,9 @@ +get('host'))->toBe('http://example.com') ->and($config1->get('new_key'))->toBe('new_value'); }); + +test('from() returns a new Config instance', function () { + $init = new Ini(); + $config = new Config($init->fromFile(__DIR__.'/../Config/config.ini')); + + $dbConfig = $config->from('database'); + + expect($dbConfig)->toBeInstanceOf(Config::class) + ->and($dbConfig)->not()->toBe($config) + ->and($dbConfig->get('username'))->toBe('admin') + ->and($dbConfig->get('password'))->toBe('admin') + ->and($dbConfig->get('database'))->toBe('mydb'); +}); + +test('from() throws exception when entry does not exists', function () { + $init = new Ini(); + $config = new Config($init->fromFile(__DIR__.'/../Config/config.ini')); + + $config->from('not_exist'); +})->throws(NotFoundException::class, "Config key 'not_exist' not found.");