chubbyphp/chubbyphp-config

Chubbyphp Config

2.1.0 2019-11-29 21:16 UTC

README

Build Status Coverage Status Total Downloads Monthly Downloads Latest Stable Version Latest Unstable Version

Description

A simple config.

Requirements

  • php: ^7.2

Suggest

  • chubbyphp/chubbyphp-container: ^1.0
  • pimple/pimple: ^3.2.3
  • symfony/console: ^2.8|^3.4|^4.2|^5.0

Installation

Through Composer as chubbyphp/chubbyphp-config.

composer require chubbyphp/chubbyphp-config "^2.1"

Usage

Command

Bootstrap

ServiceFactory (chubbyphp/chubbyphp-container)

<?php

namespace MyProject;

use Chubbyphp\Config\ConfigProvider;
use Chubbyphp\Config\ServiceFactory\ConfigServiceFactory;
use Chubbyphp\Container\Container;
use MyProject\Config\DevConfig;
use MyProject\Config\ProdConfig;

$env = 'dev';

$container = new Container();
$container->factories((new ConfigServiceFactory((new ConfigProvider([
    new DevConfig(__DIR__.'/..'),
    new ProdConfig(__DIR__.'/..'),
]))->get($env)))());

ServiceProvider (pimple/pimple)

<?php

namespace MyProject;

use Chubbyphp\Config\ConfigProvider;
use Chubbyphp\Config\ServiceProvider\ConfigServiceProvider;
use MyProject\Config\DevConfig;
use MyProject\Config\ProdConfig;
use Pimple\Container;

$env = 'dev';

$container = new Container();
$container->register(new ConfigServiceProvider(
    (new ConfigProvider([
        new DevConfig(__DIR__.'/..'),
        new ProdConfig(__DIR__.'/..'),
    ]))->get($env)
));

Config

<?php

namespace MyProject\Config;

use Chubbyphp\Config\ConfigInterface;

class DevConfig implements ConfigInterface
{
    /**
     * @var string
     */
    private $rootDir;

    /**
     * @param string $rootDir
     */
    public function __construct(string $rootDir)
    {
        $this->rootDir = $rootDir;
    }

    /**
     * @return array
     */
    public function getConfig(): array
    {
        return [
            'env' => $this->getEnv(),
            'rootDir' => $this->rootDir
        ];
    }

    /**
     * @return array
     */
    public function getDirectories(): array
    {
        $environment = $this->getEnv();

        return [
            'cache' => $this->rootDir . '/var/cache/' . $environment,
            'logs' => $this->rootDir . '/var/logs/' . $environment,
        ];
    }

    public function getEnv(): string
    {
        return 'dev';
    }
}

Copyright

Dominik Zogg 2019