Using Laravel Illuminate Config Package Outside Laravel
Moving on with Illuminate, next in the series is
In this article we'll go through the config package which Laravel use to parse all those configuration files you see in
Lets start with an empty directory or just skip to the TL;DR version. I start with running
composer init and then requiring the config package:
composer init # snip... composer require illuminate/config 4.1.*
This will bring in the Config package and all its dependencies for us. At this point you can also create a directory to hold our configuration files, I create a directory
config in project root and also created a file named
app.php in it. This is the content of my
return array( 'name' => 'Gufran', 'type' => 'Geek', 'job' => 'Messing up with computers' );
Now, as always, you need to create an index file and require the
require 'vendor/autoload.php'; require 'vendor/illuminate/support/Illuminate/Support/helpers.php';
then you need to set up some path variables, including the path to configuration directory
$basePath = str_finish(dirname(__FILE__), '/'); $configPath = $basePath . 'config';
Now, before moving on a quick lecture about
Config facade you regularly use in a typical Laravel installation.
Config facade maps to
Illuminate\Config\Repository class which is responsible to fetch and resolve all configuration arrays, you can also include sub-directories in
config directory which will be preferred based on application environment.
In order to initialise the config repository we first need to initialise the
Illuminate\Config\FileLoader class which expects an instance of
Illuminate\Filesystem and path to configuration directory:
$filesystem = new Illuminate\Filesystem\Filesystem; $loader = new Illuminate\Config\FileLoader($filesystem, $configPath);
Now we can create a config repository with this
Illuminate\Config\Repository expects an instance of
FileLoader and current application environment as a second constructor argument. This second argument - the environment - determines the configuration file to load. Default environment should be production which means you wish to load default configuration, however, if you wish to load configuration for a different environment then make sure you have respective files in place under
config/<environment>/ directory. We initialise the repository...
$config = new Illuminate\Config\Repository($loader, 'production');
... and we are done.
Now you can use
$config variable to access configuration data as usual.
$name = $config->get('app.name'); // Gufran $type = $config->get('app.type'); // Geek
require 'vendor/autoload.php'; require 'vendor/illuminate/support/Illuminate/Support/helpers.php'; $basePath = str_finish(dirname(__FILE__), '/'); $configPath = $basePath . 'config'; $loader = new Illuminate\Config\FileLoader(new Illuminate\Filesystem\Filesystem, $configPath); $config = new Illuminate\Config\Repository($loader, 'production'); echo $config->get('app.name');
I hope you'll find good use of config package outside laravel, let me know what do you think about it in comments below.