Created function to abstract how to load config from a glob pattern

This commit is contained in:
Alejandro Celaya 2019-08-10 14:09:42 +02:00
parent 3520ab6b18
commit 02ca843944
7 changed files with 48 additions and 14 deletions

View file

@ -3,13 +3,12 @@ declare(strict_types=1);
namespace Shlinkio\Shlink\CLI;
use Zend\Config\Factory;
use Zend\Stdlib\Glob;
use function Shlinkio\Shlink\Common\loadConfigFromGlob;
class ConfigProvider
{
public function __invoke()
{
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
}
}

View file

@ -3,6 +3,9 @@ declare(strict_types=1);
namespace Shlinkio\Shlink\Common;
use Zend\Config\Factory;
use Zend\Stdlib\Glob;
use function getenv;
use function json_decode as spl_json_decode;
use function json_last_error;
@ -59,3 +62,11 @@ function json_decode(string $json, int $depth = 512, int $options = 0): array
return $data;
}
/**
* Loads configuration files which match provided glob pattern, and returns the merged result as array
*/
function loadConfigFromGlob(string $globPattern): array
{
return Factory::fromFiles(Glob::glob($globPattern, Glob::GLOB_BRACE));
}

View file

@ -3,13 +3,10 @@ declare(strict_types=1);
namespace Shlinkio\Shlink\Common;
use Zend\Config\Factory;
use Zend\Stdlib\Glob;
class ConfigProvider
{
public function __invoke(): array
{
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
}
}

View file

@ -3,13 +3,12 @@ declare(strict_types=1);
namespace Shlinkio\Shlink\Core;
use Zend\Config\Factory;
use Zend\Stdlib\Glob;
use function Shlinkio\Shlink\Common\loadConfigFromGlob;
class ConfigProvider
{
public function __invoke()
{
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
}
}

View file

@ -3,13 +3,12 @@ declare(strict_types=1);
namespace Shlinkio\Shlink\EventDispatcher;
use Zend\Config\Factory;
use Zend\Stdlib\Glob;
use function Shlinkio\Shlink\Common\loadConfigFromGlob;
class ConfigProvider
{
public function __invoke()
{
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
}
}

View file

@ -5,11 +5,12 @@ namespace Shlinkio\Shlink\IpGeolocation;
use Zend\Config\Factory;
use Zend\Stdlib\Glob;
use function Shlinkio\Shlink\Common\loadConfigFromGlob;
class ConfigProvider
{
public function __invoke(): array
{
return Factory::fromFiles(Glob::glob(__DIR__ . '/../config/{,*.}config.php', Glob::GLOB_BRACE));
return loadConfigFromGlob(__DIR__ . '/../config/{,*.}config.php');
}
}

View file

@ -0,0 +1,28 @@
<?php
declare(strict_types=1);
namespace ShlinkioTest\Shlink\IpGeolocation;
use PHPUnit\Framework\TestCase;
use Shlinkio\Shlink\IpGeolocation\ConfigProvider;
use Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory;
class ConfigProviderTest extends TestCase
{
/** @var ConfigProvider */
private $configProvider;
public function setUp(): void
{
$this->configProvider = new ConfigProvider();
}
/** @test */
public function configIsReturned(): void
{
$config = $this->configProvider->__invoke();
$this->assertArrayHasKey('dependencies', $config);
$this->assertArrayHasKey(ConfigAbstractFactory::class, $config);
}
}