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-configPublish 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.yamlDeclare 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" >> .gitignoreWhile 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.yamlclusters:
aws: []
google: []Take extra caution when declaring defaults for lists of items:
# .laravel.defaults.yaml
clusters:
- region: us-east-1
- region: eu-west-1When 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-1When 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/phpunitPlease see CONTRIBUTING for details.
If you discover any security related issues, please email alex@renoki.org instead of using the issue tracker.