From: Roland Haeder Date: Tue, 26 May 2015 22:45:17 +0000 (+0200) Subject: Introduced ConfigValueTypeUnsupportedException X-Git-Url: https://git.mxchange.org/?p=core.git;a=commitdiff_plain;h=1c4fc1ae50d2e99f9e52a2fe86c15caeab55de70;ds=inline Introduced ConfigValueTypeUnsupportedException Signed-off-by: Roland Häder --- 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/config/class_ConfigEntryIsEmptyException.php b/inc/classes/exceptions/config/class_ConfigEntryIsEmptyException.php new file mode 100644 index 00000000..862e0fbb --- /dev/null +++ b/inc/classes/exceptions/config/class_ConfigEntryIsEmptyException.php @@ -0,0 +1,45 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class ConfigEntryIsEmptyException extends FrameworkException { + /** + * The constructor + * + * @param $class Class throwing this exception + * @param $code Code number for the exception + * @return void + */ + public function __construct (FrameworkConfiguration $class, $code) { + // Add a message around the missing class + $message = sprintf('[%s:%d] Empty configuration entry provided.', + $class->__toString(), + $this->getLine() + ); + + // Call parent constructor + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/exceptions/config/class_NoConfigEntryException.php b/inc/classes/exceptions/config/class_NoConfigEntryException.php new file mode 100644 index 00000000..d33d492d --- /dev/null +++ b/inc/classes/exceptions/config/class_NoConfigEntryException.php @@ -0,0 +1,50 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * @todo Rename this class to NoFoundEntryException + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class NoConfigEntryException extends FrameworkException { + /** + * The constructor + * + * @param $classArray Array with exception data + * @param $code Code number for the exception + * @return void + */ + public function __construct (array $classArray, $code) { + // Add a message around the missing class + $message = sprintf('[%s:%d] Configuration entry %s not found.', + $classArray[0], + $this->getLine(), + $classArray[1] + ); + + // Set extra data + $this->setExtraData($classArray[1].':'.$this->getLine()); + + // Call parent constructor + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php b/inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php deleted file mode 100644 index 862e0fbb..00000000 --- a/inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php +++ /dev/null @@ -1,45 +0,0 @@ - - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team - * @license GNU GPL 3.0 or any newer version - * @link http://www.shipsimu.org - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -class ConfigEntryIsEmptyException extends FrameworkException { - /** - * The constructor - * - * @param $class Class throwing this exception - * @param $code Code number for the exception - * @return void - */ - public function __construct (FrameworkConfiguration $class, $code) { - // Add a message around the missing class - $message = sprintf('[%s:%d] Empty configuration entry provided.', - $class->__toString(), - $this->getLine() - ); - - // Call parent constructor - parent::__construct($message, $code); - } -} - -// [EOF] -?> diff --git a/inc/classes/exceptions/main/class_NoConfigEntryException.php b/inc/classes/exceptions/main/class_NoConfigEntryException.php deleted file mode 100644 index d33d492d..00000000 --- a/inc/classes/exceptions/main/class_NoConfigEntryException.php +++ /dev/null @@ -1,50 +0,0 @@ - - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team - * @license GNU GPL 3.0 or any newer version - * @link http://www.shipsimu.org - * @todo Rename this class to NoFoundEntryException - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -class NoConfigEntryException extends FrameworkException { - /** - * The constructor - * - * @param $classArray Array with exception data - * @param $code Code number for the exception - * @return void - */ - public function __construct (array $classArray, $code) { - // Add a message around the missing class - $message = sprintf('[%s:%d] Configuration entry %s not found.', - $classArray[0], - $this->getLine(), - $classArray[1] - ); - - // Set extra data - $this->setExtraData($classArray[1].':'.$this->getLine()); - - // Call parent constructor - parent::__construct($message, $code); - } -} - -// [EOF] -?> 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]); } /**