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; namespace Shlinkio\Shlink\CLI;
use Zend\Config\Factory; use function Shlinkio\Shlink\Common\loadConfigFromGlob;
use Zend\Stdlib\Glob;
class ConfigProvider class ConfigProvider
{ {
public function __invoke() 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; namespace Shlinkio\Shlink\Common;
use Zend\Config\Factory;
use Zend\Stdlib\Glob;
use function getenv; use function getenv;
use function json_decode as spl_json_decode; use function json_decode as spl_json_decode;
use function json_last_error; use function json_last_error;
@ -59,3 +62,11 @@ function json_decode(string $json, int $depth = 512, int $options = 0): array
return $data; 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; namespace Shlinkio\Shlink\Common;
use Zend\Config\Factory;
use Zend\Stdlib\Glob;
class ConfigProvider class ConfigProvider
{ {
public function __invoke(): array 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; namespace Shlinkio\Shlink\Core;
use Zend\Config\Factory; use function Shlinkio\Shlink\Common\loadConfigFromGlob;
use Zend\Stdlib\Glob;
class ConfigProvider class ConfigProvider
{ {
public function __invoke() 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; namespace Shlinkio\Shlink\EventDispatcher;
use Zend\Config\Factory; use function Shlinkio\Shlink\Common\loadConfigFromGlob;
use Zend\Stdlib\Glob;
class ConfigProvider class ConfigProvider
{ {
public function __invoke() 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\Config\Factory;
use Zend\Stdlib\Glob; use Zend\Stdlib\Glob;
use function Shlinkio\Shlink\Common\loadConfigFromGlob;
class ConfigProvider class ConfigProvider
{ {
public function __invoke(): array 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);
}
}