Skip to content

Horat1us/environment-config

Repository files navigation

Environment Config

Latest Stable Version Total Downloads codecov Test & Lint

Simple class to provide config using getenv function with prefix.

Compatibility: tested on PHP 7.1, PHP 8.1

Changelog

Installation

Using composer:

composer require horat1us/environment-config

Usage

Implement your own config class:

<?php

namespace App;

use Horat1us\Environment;

class Config extends Environment\Config {
    public function getTimeout(): int
    {
        return $this->getEnv($key = 'APP_TIMEOUT', $default = 10);
    }
    
    public function getSlow(): string
    {
        // default can be instance of \Closure or callable array, like [$this, 'calculate']
        return $this->getEnv($key = 'APP_KEY', $default = function(): string {
            return 'some-string'; // slow operation, may be fetching from DB 
        });
    }
    
    public function getNullValue(): ?string
    {
        /**
          * if you want to return null instead of throwing exceptio
          * if no environment variable found
          */
        return $this->getEnv('KEY', [$this, 'null']);  
    }
    
    public function getName(): string {
        return $this->getEnv($key = 'APP_NAME');
    }
}

then use it:

<?php

use App;

$config = new App\Config("PREFIX_");
$config->getTimeout(); // 10

putenv("PREFIX_APP_TIMEOUT=5");
$config->getTimeout(); // 5

$config->getSlow(); // some-string

// MissingEnvironmentException will be thrown because no default value provided
$config->getName(); 

MagicTrait

You can define your config keys/methods using MagicTrait:

<?php

use Horat1us\Environment;

class Config {
    use Environment\MagicTrait {
        getEnvironment as public getHost;
    }
    
    protected function getEnvironmentKeyPrefix(): string {
        return 'TEST_';
    }
}

$config = new Config;
$config->getHost(); // TEST_HOST environment key will be used to get value

Note: your environment getters should be named with prefix get and have camel case name

Author

License

MIT

About

Environment Config class for PHP

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages