aedart/config-loader

This package is abandoned and no longer maintained. The author suggests using the aedart/athenaeum package instead.

Utility for loading various types of configuration files and parse them to a Laravel Configuration Repository

5.1.0 2018-10-20 13:33 UTC

This package is auto-updated.

Last update: 2022-02-01 12:52:12 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

Deprecated- Config Loader

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.

Contents

When to use this

  • When you need to load configuration from a file
  • (When you need to load configuration from multiple files)

How to install

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.

Quick start

Supported file types

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

Inside a Laravel project

Service Provider

The first thing you need to to, is to register the service provider;

\Aedart\Config\Loader\Providers\ConfigurationLoaderServiceProvider::class

Load configuration

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();

Outside a Laravel project

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();

Load and parse a single file

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');

How to access the configuration

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'

Custom configuration file parser

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

Contribution

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.

Bug Report

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.

Fork, code and send pull-request

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.

Acknowledgement

Versioning

This package follows Semantic Versioning 2.0.0

License

BSD-3-Clause, Read the LICENSE file included in this package