for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Sovereign\Lib;
use Monolog\Logger;
/**
* Class Config
* @package Sovereign\Lib
*/
class Config
{
* @var mixed
private $config;
* @var Logger
private $logger;
* Config constructor.
* @param $configFile
* @param Logger $logger
public function __construct($configFile, Logger $logger) {
$this->logger = $logger;
$this->loadFile($configFile);
}
public function loadFile ($configFile) {
if (!file_exists(realpath($configFile))) {
$this->logger->addError('Config file '.realpath($configFile).' not found.');
return;
try {
$this->config = array_change_key_case(include($configFile), \CASE_LOWER);
$this->logger->addDebug('Config file loaded: '.realpath($configFile));
} catch (\Exception $e) {
$this->logger->addError('Failed loading config file ('.realpath($configFile).'): '.$e->getMessage());
* @param string $key
* @param string|null $type
* @param string|null $default
* @return null|string
public function get($key, $type = null, $default = null)
$type = strtolower($type);
if (!empty($this->config[$type][$key])) {
return $this->config[$type][$key];
$this->logger->addWarning('Config setting not found: ['.$type.']['.$key.']');
return $default;
* @return array
public function getAll($type = null)
if (!empty($this->config[$type])) {
return $this->config[$type];
$this->logger->addWarning('Config group not found: ['.$type.']');
return array();