Package has been replaced by aedart/athenaeum
A utility for loading various types of configuration files and parse them to a Laravel Configuration Repository. This package contains a set of default file-parsers, which can be applied. However, if you have a need for a different kind of parser, then you can "simply" create one, add it to the loader.
- When you need to load configuration from a file
- (When you need to load configuration from multiple files)
composer require aedart/config-loader
This package uses composer. If you do not know what that is or how it works, I recommend that you read a little about, before attempting to use this package.
File Extension | Parser |
---|---|
*.ini | \Aedart\Config\Loader\Parsers\Ini |
*.json | \Aedart\Config\Loader\Parsers\Json |
*.php (php array) | \Aedart\Config\Loader\Parsers\PHPArray |
*.yml (also *.yaml) | \Aedart\Config\Loader\Parsers\Yaml |
The first thing you need to to, is to register the service provider;
\Aedart\Config\Loader\Providers\ConfigurationLoaderServiceProvider::class
After you have specified the service provider, you can use the loader. In the following example, a directory path is provided and the files contained in that directory are loaded and parsed;
use Aedart\Config\Loader\Loaders\ConfigLoader;
// Path to some directory that contains the configuration file(s)
$path = 'config/';
// Create a new loader instance
$loader = new ConfigLoader($path);
// Load and parse the configuration files
// NB: Is added directly to Laravel's configuration, can be accessed normally via the Config facade...
$loader->load();
// Obtain the configuration repository
$config = $loader->getConfig();
When working outside a Laravel project, you need to create a few more instances, which the loader is dependent upon;
use Aedart\Config\Loader\Loaders\ConfigLoader;
use Aedart\Config\Loader\Factories\DefaultParserFactory;
use Illuminate\Config\Repository;
use Illuminate\Filesystem\Filesystem;
// Path to some directory that contains the configuration file(s)
$path = 'config/';
// Create a new loader instance
$loader = new ConfigLoader($path);
// Specify the required dependencies
$loader->setConfig(new Repository());
$loader->setFile(new Filesystem());
$loader->setParserFactory(new DefaultParserFactory());
// Load and parse the configuration files
$loader->load();
// Obtain the configuration repository
$config = $loader->getConfig();
You can also load and parse a single file, instead of an entire directory;
// Provided you have created an instance of the configuration loader,
// simply specify the full path to the configuration file
$config = $loader->parse('config/users.yml');
If you are not familiar with Laravel's configuration repository, please review its documentation.
Example PHP Array configuration file
(config/users.php)
return [
'message' => 'Hallo World'
];
Example of accessing the message
// ... (loading and parsing not shown) ...
// Fetch the message key
$message = $config->get('users.message');
echo $message; // Outputs 'Hallo World'
If you need a custom parser, then you can create one by implementing the \Aedart\Config\Loader\Contracts\Parsers\Parser
interface.
However, you also need to add your parser to a parser factory
. Please review the \Aedart\Config\Loader\Contracts\Factories\ParserFactory
interface, as well as the default
factory provided in this package; \Aedart\Config\Loader\Factories\DefaultParserFactory
Have you found a defect ( bug or design flaw ), or do you wish improvements? In the following sections, you might find some useful information on how you can help this project. In any case, I thank you for taking the time to help me improve this project's deliverables and overall quality.
If you are convinced that you have found a bug, then at the very least you should create a new issue. In that given issue, you should as a minimum describe the following;
- Where is the defect located
- A good, short and precise description of the defect (Why is it a defect)
- How to replicate the defect
- (A possible solution for how to resolve the defect)
When time permits it, I will review your issue and take action upon it.
A good and well written bug report can help me a lot. Nevertheless, if you can or wish to resolve the defect by yourself, here is how you can do so;
- Fork this project
- Create a new local development branch for the given defect-fix
- Write your code / changes
- Create executable test-cases (prove that your changes are solid!)
- Commit and push your changes to your fork-repository
- Send a pull-request with your changes
- Drink a Beer - you earned it :)
As soon as I receive the pull-request (and have time for it), I will review your changes and merge them into this project. If not, I will inform you why I choose not to.
- Taylor Otwell, for creating Laravel and especially the Service Container, that I'm using daily
- Jeffrey Way, for creating Laracasts - a great place to learn new things... E.g. how to use the configuration repository
This package follows Semantic Versioning 2.0.0
BSD-3-Clause, Read the LICENSE file included in this package