Skip to content

zeyad82/laravel-envx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Envx

Laravel Envx is a custom php environment file as an array so that it can have associative and multidimensional arrays with validation rules in order to avoid any unexpected behaviour especially if there are several instances of the project. This has been tested with laravel 5.6 and 5.7.

Highlights

  • Make sure you don't go live without all required envx.php variables and without the correct values
  • Validate envx.php variables using the Laravel Validator by defining rules in config/envx-validator.php
  • Custom validation rule required_ifany to apply rules to an atrribute if another array attribute has a given value

Usage

Just like laravel env => envx('attribute', 'default')

Installation

Via Composer:

    composer require zeyad82/laravel-envx

If you don't use auto-discovery, add the service provider your config/app.php:

    Zeyad82\LaravelEnvx\LaravelEnvxServiceProvider::class,

Publish configuration file

    php artisan vendor:publish --tag="laravel-envx"

This will publish config/envx-validator.php and envx.example.php then run

    cp envx.example.php envx.php

If you will have different envx.php, add envx.php to .gitignore in your project root

If you will use envx in config files, the only way I found is to append the follwing to bootstrap/app.php after ExceptionHandler

$app->singleton('envx', function ($app) {
    return new Zeyad82\LaravelEnvx\EnvxService;
});

Example configuration file

<?php
// config/envx-validator.php

return [
    'ARRAY'         => 'required|array',
    'ARRAY.*'       => 'required|in:val1,val2,val3',

    'ATTRIBUTE'     => 'required_ifany:ARRAY,val1|url',
]

Example envx.php file

<?php

return [
    'ARRAY'                     => 'required|array',
    'ARRAY.*'                   => 'required|in:val1,val2,val3',

    'ATTRIBUTE'                 => 'required_ifany:ARRAY,val1|url',
];

Screenshot

Command Line

Screenshot

Browser

Screenshot

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License for more information.