From 1c4fc1ae50d2e99f9e52a2fe86c15caeab55de70 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Wed, 27 May 2015 00:45:17 +0200 Subject: [PATCH] Introduced ConfigValueTypeUnsupportedException MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- inc/classes/exceptions/config/.htaccess | 1 + .../class_ConfigEntryIsEmptyException.php | 0 .../class_NoConfigEntryException.php | 0 inc/config/class_FrameworkConfiguration.php | 80 ++++++++++--------- 4 files changed, 43 insertions(+), 38 deletions(-) create mode 100644 inc/classes/exceptions/config/.htaccess rename inc/classes/exceptions/{main => config}/class_ConfigEntryIsEmptyException.php (100%) rename inc/classes/exceptions/{main => config}/class_NoConfigEntryException.php (100%) diff --git a/inc/classes/exceptions/config/.htaccess b/inc/classes/exceptions/config/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/exceptions/config/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php b/inc/classes/exceptions/config/class_ConfigEntryIsEmptyException.php similarity index 100% rename from inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php rename to inc/classes/exceptions/config/class_ConfigEntryIsEmptyException.php diff --git a/inc/classes/exceptions/main/class_NoConfigEntryException.php b/inc/classes/exceptions/config/class_NoConfigEntryException.php similarity index 100% rename from inc/classes/exceptions/main/class_NoConfigEntryException.php rename to inc/classes/exceptions/config/class_NoConfigEntryException.php diff --git a/inc/config/class_FrameworkConfiguration.php b/inc/config/class_FrameworkConfiguration.php index 8d786742..d6ff28a2 100644 --- a/inc/config/class_FrameworkConfiguration.php +++ b/inc/config/class_FrameworkConfiguration.php @@ -39,8 +39,9 @@ class FrameworkConfiguration implements Registerable { private static $configInstance = NULL; // Some constants for the configuration system - const EXCEPTION_CONFIG_ENTRY_IS_EMPTY = 0x130; - const EXCEPTION_CONFIG_ENTRY_WAS_NOT_FOUND = 0x131; + const EXCEPTION_CONFIG_KEY_IS_EMPTY = 0x130; + const EXCEPTION_CONFIG_KEY_WAS_NOT_FOUND = 0x131; + const EXCEPTION_CONFIG_VALUE_TYPE_UNSUPPORTED = 0x132; /** * Protected constructor @@ -129,14 +130,14 @@ class FrameworkConfiguration implements Registerable { } /** - * Checks whether the given configuration entry is set + * Checks whether the given configuration key is set * - * @param $configEntry The configuration entry we shall check - * @return $isset Whether the given configuration entry is set + * @param $configKey The configuration key we shall check + * @return $isset Whether the given configuration key is set */ - public function isConfigurationEntrySet ($configEntry) { + public function isConfigurationEntrySet ($configKey) { // Is it set? - $isset = isset($this->config[$configEntry]); + $isset = isset($this->config[$configKey]); // Return the result return $isset; @@ -145,75 +146,78 @@ class FrameworkConfiguration implements Registerable { /** * Read a configuration element. * - * @param $configEntry The configuration element + * @param $configKey The configuration element * @return $configValue The fetched configuration value - * @throws ConfigEntryIsEmptyException If $configEntry is empty - * @throws NoConfigEntryException If a configuration element was not found + * @throws ConfigEntryIsEmptyException If $configKey is empty + * @throws NoConfigEntryException If a configuration element was not found */ - public function getConfigEntry ($configEntry) { + public function getConfigEntry ($configKey) { // Convert dashes to underscore - $configEntry = $this->convertDashesToUnderscores($configEntry); + $configKey = $this->convertDashesToUnderscores($configKey); - // Is a valid configuration entry provided? - if (empty($configEntry)) { + // Is a valid configuration key provided? + if (empty($configKey)) { // Entry is empty - throw new ConfigEntryIsEmptyException($this, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY); - } elseif (!$this->isConfigurationEntrySet($configEntry)) { + throw new ConfigEntryIsEmptyException($this, self::EXCEPTION_CONFIG_KEY_IS_EMPTY); + } elseif (!$this->isConfigurationEntrySet($configKey)) { // Entry was not found! - throw new NoConfigEntryException(array(__CLASS__, $configEntry), self::EXCEPTION_CONFIG_ENTRY_WAS_NOT_FOUND); + throw new NoConfigEntryException(array(__CLASS__, $configKey), self::EXCEPTION_CONFIG_KEY_WAS_NOT_FOUND); } // Return the requested value - return $this->config[$configEntry]; + return $this->config[$configKey]; } /** - * Set a configuration entry + * Set a configuration key * - * @param $configEntry The configuration entry we want to add/change + * @param $configKey The configuration key we want to add/change * @param $configValue The configuration value we want to set * @return void - * @throws ConfigEntryIsEmptyException If $configEntry is empty + * @throws ConfigEntryIsEmptyException If $configKey is empty + * @throws ConfigValueTypeUnsupportedException If $configValue has an unsupported variable type */ - public final function setConfigEntry ($configEntry, $configValue) { + public final function setConfigEntry ($configKey, $configValue) { // Cast to string - $configEntry = $this->convertDashesToUnderscores($configEntry); - $configValue = (string) $configValue; + $configKey = $this->convertDashesToUnderscores($configKey); - // Is a valid configuration entry provided? - if (empty($configEntry)) { + // Is a valid configuration key key provided? + if ((empty($configKey)) || (!is_string($configKey))) { // Entry is empty - throw new ConfigEntryIsEmptyException($this, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY); - } // END - if + throw new ConfigEntryIsEmptyException($this, self::EXCEPTION_CONFIG_KEY_IS_EMPTY); + } elseif ((is_null($configValue)) || (is_array($configValue)) || (is_object($configValue)) || (is_resource($configValue))) { + // These cannot be set as this is not intended for configuration values, please use FrameworkArrayObject instead. + throw new ConfigValueTypeUnsupportedException(array($this, $configKey, $configValue), self::EXCEPTION_CONFIG_VALUE_TYPE_UNSUPPORTED); + } // Set the configuration value - //* NOISY-DEBUG: */ print(__METHOD__ . ':configEntry=' . $configEntry . ',configValue=' . $configValue . PHP_EOL); - $this->config[$configEntry] = $configValue; + //* NOISY-DEBUG: */ print(__METHOD__ . ':configEntry=' . $configKey . ',configValue[' . gettype($configValue) . ']=' . $configValue . PHP_EOL); + $this->config[$configKey] = $configValue; // Resort the array ksort($this->config); } /** - * Unset a configuration entry, the entry must be there or else an + * Unset a configuration key, the entry must be there or else an * exception is thrown. * - * @param $configEntry Configuration entry to unset + * @param $configKey Configuration key to unset * @return void * @throws NoConfigEntryException If a configuration element was not found */ - public final function unsetConfigEntry ($configEntry) { + public final function unsetConfigEntry ($configKey) { // Convert dashes to underscore - $configEntry = $this->convertDashesToUnderscores($configEntry); + $configKey = $this->convertDashesToUnderscores($configKey); - // Is the configuration entry there? - if (!$this->isConfigurationEntrySet($configEntry)) { + // Is the configuration key there? + if (!$this->isConfigurationEntrySet($configKey)) { // Entry was not found! - throw new NoConfigEntryException(array(__CLASS__, $configEntry), self::EXCEPTION_CONFIG_ENTRY_WAS_NOT_FOUND); + throw new NoConfigEntryException(array(__CLASS__, $configKey), self::EXCEPTION_CONFIG_KEY_WAS_NOT_FOUND); } // END - if // Unset it - unset($this->config[$configEntry]); + unset($this->config[$configKey]); } /** -- 2.39.2