The usual Laravel config files, but with one YAML file. Write objects and arrays in your config without having to write ugly inline, JSON.
You can install the package via composer:
composer require renoki-co/laravel-yaml-config
Publish the config:
php artisan vendor:publish --provider="RenokiCo\LaravelYamlConfig\LaravelYamlConfigServiceProvider" --tag="config"
This package makes sure you don't have to use inline-JSON in your .env files that would look like this:
AWS_CLUSTERS='[{"region": "us-east-1", "url": "..."}, {"region": "eu-west-1", "url": "..."}]'
// config/clusters.php
return [
'aws' => env('AWS_CLUSTERS', json_encode([
// create a default for it
])),
];
First, create a local .laravel.yaml
file in your root Laravel project:
touch .laravel.yaml
Declare your configuration in YAML:
clusters:
aws:
- region: us-east-1
url: https://...
- region: eu-west-1
url: https://...
google:
- region: europe-west1
url: https://...
foreach (config('clusters.aws') as $cluster) {
// $cluster['region']
}
You shouldn't commit your .laravel.yaml
files to your code repo:
echo ".laravel.yaml\n.laravel.yml" >> .gitignore
While the package lets you set arbitrary config without messing with ugly encoded JSON, you can still use it to update nested variables with already-existing configuration:
database:
connectons:
mysql:
host: mysql
clusters:
aws:
# ...
While you shouldn't commit your .laravel.yaml
file, you can commit a .laravel.defaults.yaml
file that can contain defaults for specific configs you have declared:
touch .laravel.config.yaml
clusters:
aws: []
google: []
Take extra caution when declaring defaults for lists of items:
# .laravel.defaults.yaml
clusters:
- region: us-east-1
- region: eu-west-1
When a config that contains lists that are pre-filled, with a .laravel.yaml
like this, an odd behavior appears:
# .laravel.yaml
clusters:
- region: ap-south-1
When you'd expect the final value of clusters
to contain only one item, it will actually contain two items, with the first one being replaced instead:
// 'clusters' => [
// ['region' => 'ap-south-1'],
// ['region' => 'eu-west-1'],
// ]
dump(config('clusters'));
vendor/bin/phpunit
Please see CONTRIBUTING for details.
If you discover any security related issues, please email alex@renoki.org instead of using the issue tracker.