Used constants when possible when parsing app config

This commit is contained in:
Alejandro Celaya 2018-10-06 11:12:42 +02:00
parent 3b95925217
commit 0d9c7282df
5 changed files with 47 additions and 42 deletions

View File

@ -13,8 +13,8 @@ class ApplicationConfigCustomizer implements ConfigCustomizerInterface
{ {
use StringUtilsTrait; use StringUtilsTrait;
private const SECRET = 'SECRET'; public const SECRET = 'SECRET';
private const DISABLE_TRACK_PARAM = 'DISABLE_TRACK_PARAM'; public const DISABLE_TRACK_PARAM = 'DISABLE_TRACK_PARAM';
private const EXPECTED_KEYS = [ private const EXPECTED_KEYS = [
self::SECRET, self::SECRET,
self::DISABLE_TRACK_PARAM, self::DISABLE_TRACK_PARAM,

View File

@ -16,12 +16,12 @@ class DatabaseConfigCustomizer implements ConfigCustomizerInterface
{ {
use AskUtilsTrait; use AskUtilsTrait;
private const DRIVER = 'DRIVER'; public const DRIVER = 'DRIVER';
private const NAME = 'NAME'; public const NAME = 'NAME';
private const USER = 'USER'; public const USER = 'USER';
private const PASSWORD = 'PASSWORD'; public const PASSWORD = 'PASSWORD';
private const HOST = 'HOST'; public const HOST = 'HOST';
private const PORT = 'PORT'; public const PORT = 'PORT';
private const DRIVER_DEPENDANT_OPTIONS = [ private const DRIVER_DEPENDANT_OPTIONS = [
self::DRIVER, self::DRIVER,
self::NAME, self::NAME,

View File

@ -10,8 +10,8 @@ use function array_keys;
class LanguageConfigCustomizer implements ConfigCustomizerInterface class LanguageConfigCustomizer implements ConfigCustomizerInterface
{ {
private const DEFAULT_LANG = 'DEFAULT'; public const DEFAULT_LANG = 'DEFAULT';
private const CLI_LANG = 'CLI'; public const CLI_LANG = 'CLI';
private const EXPECTED_KEYS = [ private const EXPECTED_KEYS = [
self::DEFAULT_LANG, self::DEFAULT_LANG,
self::CLI_LANG, self::CLI_LANG,

View File

@ -15,10 +15,10 @@ class UrlShortenerConfigCustomizer implements ConfigCustomizerInterface
{ {
use AskUtilsTrait; use AskUtilsTrait;
private const SCHEMA = 'SCHEMA'; public const SCHEMA = 'SCHEMA';
private const HOSTNAME = 'HOSTNAME'; public const HOSTNAME = 'HOSTNAME';
private const CHARS = 'CHARS'; public const CHARS = 'CHARS';
private const VALIDATE_URL = 'VALIDATE_URL'; public const VALIDATE_URL = 'VALIDATE_URL';
private const EXPECTED_KEYS = [ private const EXPECTED_KEYS = [
self::SCHEMA, self::SCHEMA,
self::HOSTNAME, self::HOSTNAME,

View File

@ -3,6 +3,10 @@ declare(strict_types=1);
namespace Shlinkio\Shlink\Installer\Model; namespace Shlinkio\Shlink\Installer\Model;
use Shlinkio\Shlink\Installer\Config\Plugin\ApplicationConfigCustomizer;
use Shlinkio\Shlink\Installer\Config\Plugin\DatabaseConfigCustomizer;
use Shlinkio\Shlink\Installer\Config\Plugin\LanguageConfigCustomizer;
use Shlinkio\Shlink\Installer\Config\Plugin\UrlShortenerConfigCustomizer;
use Zend\Stdlib\ArraySerializableInterface; use Zend\Stdlib\ArraySerializableInterface;
use function Shlinkio\Shlink\Common\array_get_path; use function Shlinkio\Shlink\Common\array_get_path;
use function Shlinkio\Shlink\Common\array_path_exists; use function Shlinkio\Shlink\Common\array_path_exists;
@ -115,29 +119,29 @@ final class CustomizableAppConfig implements ArraySerializableInterface
public function exchangeArray(array $array): void public function exchangeArray(array $array): void
{ {
$this->setApp($this->mapExistingPathsToKeys([ $this->setApp($this->mapExistingPathsToKeys([
'SECRET' => ['app_options', 'secret_key'], ApplicationConfigCustomizer::SECRET => ['app_options', 'secret_key'],
'DISABLE_TRACK_PARAM' => ['app_options', 'disable_track_param'], ApplicationConfigCustomizer::DISABLE_TRACK_PARAM => ['app_options', 'disable_track_param'],
], $array)); ], $array));
$this->setDatabase($this->mapExistingPathsToKeys([ $this->setDatabase($this->mapExistingPathsToKeys([
'DRIVER' => ['entity_manager', 'connection', 'driver'], DatabaseConfigCustomizer::DRIVER => ['entity_manager', 'connection', 'driver'],
'USER' => ['entity_manager', 'connection', 'user'], DatabaseConfigCustomizer::USER => ['entity_manager', 'connection', 'user'],
'PASSWORD' => ['entity_manager', 'connection', 'password'], DatabaseConfigCustomizer::PASSWORD => ['entity_manager', 'connection', 'password'],
'NAME' => ['entity_manager', 'connection', 'dbname'], DatabaseConfigCustomizer::NAME => ['entity_manager', 'connection', 'dbname'],
'HOST' => ['entity_manager', 'connection', 'host'], DatabaseConfigCustomizer::HOST => ['entity_manager', 'connection', 'host'],
'PORT' => ['entity_manager', 'connection', 'port'], DatabaseConfigCustomizer::PORT => ['entity_manager', 'connection', 'port'],
], $array)); ], $array));
$this->setLanguage($this->mapExistingPathsToKeys([ $this->setLanguage($this->mapExistingPathsToKeys([
'DEFAULT' => ['translator', 'locale'], LanguageConfigCustomizer::DEFAULT_LANG => ['translator', 'locale'],
'CLI' => ['cli', 'locale'], LanguageConfigCustomizer::CLI_LANG => ['cli', 'locale'],
], $array)); ], $array));
$this->setUrlShortener($this->mapExistingPathsToKeys([ $this->setUrlShortener($this->mapExistingPathsToKeys([
'SCHEMA' => ['url_shortener', 'domain', 'schema'], UrlShortenerConfigCustomizer::SCHEMA => ['url_shortener', 'domain', 'schema'],
'HOSTNAME' => ['url_shortener', 'domain', 'hostname'], UrlShortenerConfigCustomizer::HOSTNAME => ['url_shortener', 'domain', 'hostname'],
'CHARS' => ['url_shortener', 'shortcode_chars'], UrlShortenerConfigCustomizer::CHARS => ['url_shortener', 'shortcode_chars'],
'VALIDATE_URL' => ['url_shortener', 'validate_url'], UrlShortenerConfigCustomizer::VALIDATE_URL => ['url_shortener', 'validate_url'],
], $array)); ], $array));
} }
@ -155,11 +159,11 @@ final class CustomizableAppConfig implements ArraySerializableInterface
public function getArrayCopy(): array public function getArrayCopy(): array
{ {
$dbDriver = $this->database['DRIVER'] ?? ''; $dbDriver = $this->database[DatabaseConfigCustomizer::DRIVER] ?? '';
$config = [ $config = [
'app_options' => [ 'app_options' => [
'secret_key' => $this->app['SECRET'] ?? '', 'secret_key' => $this->app[ApplicationConfigCustomizer::SECRET] ?? '',
'disable_track_param' => $this->app['DISABLE_TRACK_PARAM'] ?? null, 'disable_track_param' => $this->app[ApplicationConfigCustomizer::DISABLE_TRACK_PARAM] ?? null,
], ],
'entity_manager' => [ 'entity_manager' => [
'connection' => [ 'connection' => [
@ -167,18 +171,18 @@ final class CustomizableAppConfig implements ArraySerializableInterface
], ],
], ],
'translator' => [ 'translator' => [
'locale' => $this->language['DEFAULT'] ?? 'en', 'locale' => $this->language[LanguageConfigCustomizer::DEFAULT_LANG] ?? 'en',
], ],
'cli' => [ 'cli' => [
'locale' => $this->language['CLI'] ?? 'en', 'locale' => $this->language[LanguageConfigCustomizer::CLI_LANG] ?? 'en',
], ],
'url_shortener' => [ 'url_shortener' => [
'domain' => [ 'domain' => [
'schema' => $this->urlShortener['SCHEMA'] ?? 'http', 'schema' => $this->urlShortener[UrlShortenerConfigCustomizer::SCHEMA] ?? 'http',
'hostname' => $this->urlShortener['HOSTNAME'] ?? '', 'hostname' => $this->urlShortener[UrlShortenerConfigCustomizer::HOSTNAME] ?? '',
], ],
'shortcode_chars' => $this->urlShortener['CHARS'] ?? '', 'shortcode_chars' => $this->urlShortener[UrlShortenerConfigCustomizer::CHARS] ?? '',
'validate_url' => $this->urlShortener['VALIDATE_URL'] ?? true, 'validate_url' => $this->urlShortener[UrlShortenerConfigCustomizer::VALIDATE_URL] ?? true,
], ],
]; ];
@ -186,11 +190,12 @@ final class CustomizableAppConfig implements ArraySerializableInterface
if ($dbDriver === 'pdo_sqlite') { if ($dbDriver === 'pdo_sqlite') {
$config['entity_manager']['connection']['path'] = self::SQLITE_DB_PATH; $config['entity_manager']['connection']['path'] = self::SQLITE_DB_PATH;
} else { } else {
$config['entity_manager']['connection']['user'] = $this->database['USER'] ?? ''; $config['entity_manager']['connection']['user'] = $this->database[DatabaseConfigCustomizer::USER] ?? '';
$config['entity_manager']['connection']['password'] = $this->database['PASSWORD'] ?? ''; $config['entity_manager']['connection']['password'] =
$config['entity_manager']['connection']['dbname'] = $this->database['NAME'] ?? ''; $this->database[DatabaseConfigCustomizer::PASSWORD] ?? '';
$config['entity_manager']['connection']['host'] = $this->database['HOST'] ?? ''; $config['entity_manager']['connection']['dbname'] = $this->database[DatabaseConfigCustomizer::NAME] ?? '';
$config['entity_manager']['connection']['port'] = $this->database['PORT'] ?? ''; $config['entity_manager']['connection']['host'] = $this->database[DatabaseConfigCustomizer::HOST] ?? '';
$config['entity_manager']['connection']['port'] = $this->database[DatabaseConfigCustomizer::PORT] ?? '';
if ($dbDriver === 'pdo_mysql') { if ($dbDriver === 'pdo_mysql') {
$config['entity_manager']['connection']['driverOptions'] = [ $config['entity_manager']['connection']['driverOptions'] = [