// Import framework stuff
use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap;
-use Org\Mxchange\CoreFramework\Criteria\Criteria;
use Org\Mxchange\CoreFramework\EntryPoint\ApplicationEntryPoint;
use Org\Mxchange\CoreFramework\Factory\Object\ObjectFactory;
+use Org\Mxchange\CoreFramework\Filesystem\FileIoException;
use Org\Mxchange\CoreFramework\Filesystem\PathWriteProtectedException;
use Org\Mxchange\CoreFramework\Generic\FrameworkInterface;
use Org\Mxchange\CoreFramework\Generic\NullPointerException;
use Org\Mxchange\CoreFramework\Result\Database\CachedDatabaseResult;
use Org\Mxchange\CoreFramework\State\Stateable;
use Org\Mxchange\CoreFramework\Stream\Output\OutputStreamer;
-use Org\Mxchange\CoreFramework\Utils\String\StringUtils;
+use Org\Mxchange\CoreFramework\Utils\Strings\StringUtils;
// Import SPL stuff
-use \stdClass;
+use \BadMethodCallException;
use \InvalidArgumentException;
use \ReflectionClass;
use \SplFileInfo;
+use \stdClass;
/**
* The simulator system class is the super class of all other classes. This
*
* @author Roland Haeder <webmaster@shipsimu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2020 Core Developer Team
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2022 Core Developer Team
* @license GNU GPL 3.0 or any newer version
* @link http://www.shipsimu.org
*
*/
abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
/**
- * Length of output from hash()
+ * Self-referencing instance
*/
- private static $hashLength = NULL;
+ private static $selfInstance = NULL;
/**
- * Self-referencing instance
+ * Stub methods
*/
- private static $selfInstance = NULL;
+ private static $stubMethods = [
+ 'partialStub' => true,
+ '__call' => true,
+ '__callStatic' => true,
+ ];
/**
* The real class name
const EXCEPTION_ATTRIBUTES_ARE_MISSING = 0x02b;
const EXCEPTION_ARRAY_ELEMENTS_MISSING = 0x02c;
const EXCEPTION_TEMPLATE_ENGINE_UNSUPPORTED = 0x02d;
- const EXCEPTION_UNSPPORTED_OPERATION = 0x02e;
- const EXCEPTION_FACTORY_REQUIRE_PARAMETER = 0x02f;
- const EXCEPTION_MISSING_ELEMENT = 0x030;
- const EXCEPTION_HEADERS_ALREADY_SENT = 0x031;
- const EXCEPTION_DEFAULT_CONTROLLER_GONE = 0x032;
- const EXCEPTION_CLASS_NOT_FOUND = 0x033;
- const EXCEPTION_REQUIRED_INTERFACE_MISSING = 0x034;
- const EXCEPTION_FATAL_ERROR = 0x035;
- const EXCEPTION_FILE_NOT_FOUND = 0x036;
- const EXCEPTION_ASSERTION_FAILED = 0x037;
- const EXCEPTION_FILE_NOT_REACHABLE = 0x038;
- const EXCEPTION_FILE_CANNOT_BE_READ = 0x039;
- const EXCEPTION_FILE_CANNOT_BE_WRITTEN = 0x03a;
- const EXCEPTION_PATH_CANNOT_BE_WRITTEN = 0x03b;
- const EXCEPTION_DATABASE_UPDATED_NOT_ALLOWED = 0x03c;
- const EXCEPTION_FILTER_CHAIN_INTERCEPTED = 0x03d;
- const EXCEPTION_INVALID_SOCKET = 0x03e;
- const EXCEPTION_SELF_INSTANCE = 0x03f;
+ const EXCEPTION_FACTORY_REQUIRE_PARAMETER = 0x02e;
+ const EXCEPTION_MISSING_ELEMENT = 0x02f;
+ const EXCEPTION_HEADERS_ALREADY_SENT = 0x030;
+ const EXCEPTION_DEFAULT_CONTROLLER_GONE = 0x031;
+ const EXCEPTION_CLASS_NOT_FOUND = 0x032;
+ const EXCEPTION_REQUIRED_INTERFACE_MISSING = 0x033;
+ const EXCEPTION_FATAL_ERROR = 0x034;
+ const EXCEPTION_FILE_NOT_FOUND = 0x035;
+ const EXCEPTION_ASSERTION_FAILED = 0x036;
+ const EXCEPTION_FILE_NOT_REACHABLE = 0x037;
+ const EXCEPTION_FILE_CANNOT_BE_READ = 0x038;
+ const EXCEPTION_FILE_CANNOT_BE_WRITTEN = 0x039;
+ const EXCEPTION_PATH_CANNOT_BE_WRITTEN = 0x03a;
+ const EXCEPTION_DATABASE_UPDATED_NOT_ALLOWED = 0x03b;
+ const EXCEPTION_FILTER_CHAIN_INTERCEPTED = 0x03c;
+ const EXCEPTION_INVALID_SOCKET = 0x03d;
+ const EXCEPTION_SELF_INSTANCE = 0x03e;
/**
* Startup time in miliseconds
* @throws UnsupportedOperationException Objects of this framework cannot be serialized
*/
public final function __sleep () {
- throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
+ throw new UnsupportedOperationException([$this, __FUNCTION__], FrameworkInterface::EXCEPTION_UNSPPORTED_OPERATION);
}
/**
* @throws UnsupportedOperationException Objects of this framework cannot be serialized
*/
public final function __wakeup () {
- throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
+ throw new UnsupportedOperationException([$this, __FUNCTION__], FrameworkInterface::EXCEPTION_UNSPPORTED_OPERATION);
}
/**
* @throws UnsupportedOperationException Objects of this framework cannot be serialized
*/
public final function __invoke () {
- throw new UnsupportedOperationException(array($this, __FUNCTION__), self::EXCEPTION_UNSPPORTED_OPERATION);
+ throw new UnsupportedOperationException([$this, __FUNCTION__], FrameworkInterface::EXCEPTION_UNSPPORTED_OPERATION);
}
/**
* @return $debugInstance Instance to class DebugConsoleOutput or DebugWebOutput
*/
public final function getDebugInstance () {
- // Get debug instance
- $debugInstance = GenericRegistry::getRegistry()->getInstance('debug');
-
- // Return it
- return $debugInstance;
+ return GenericRegistry::getRegistry()->getInstance('debug');
}
/**
* @return $webOutputInstance - Instance to class WebOutput
*/
public final function getWebOutputInstance () {
- $webOutputInstance = GenericRegistry::getRegistry()->getInstance('web_output');
- return $webOutputInstance;
+ return GenericRegistry::getRegistry()->getInstance('web_output');
}
/**
));
}
- /**
- * Replaces control characters with printable output
- *
- * @param $str String with control characters
- * @return $str Replaced string
- */
- protected function replaceControlCharacters (string $str) {
- // Replace them
- $str = str_replace(
- chr(13), '[r]', str_replace(
- chr(10), '[n]', str_replace(
- chr(9) , '[t]',
- $str
- )));
-
- // Return it
- return $str;
- }
-
/**
* Output a partial stub message for the caller method
*
* @deprecated Not fully, as the new Logger facilities are not finished yet.
*/
public final static function createDebugInstance (string $className, int $lineNumber = NULL) {
- // Is the instance set?
- if (!GenericRegistry::getRegistry()->instanceExists('debug')) {
+ // Validate parameter
+ if (empty($className)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "className" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!GenericRegistry::getRegistry()->instanceExists('debug')) {
// Init debug instance
$debugInstance = NULL;
$backtrace = debug_backtrace(!DEBUG_BACKTRACE_PROVIDE_OBJECT);
// Is function partialStub/__callStatic ?
- if (in_array($backtrace[1]['function'], array('partialStub', '__call', '__callStatic'))) {
+ if (isset(self::$stubMethods[$backtrace[1]['function']])) {
// Prepend class::function:line from 3rd element
$message = sprintf('[%s::%s:%d]: %s',
$backtrace[2]['class'],
}
} else {
// Are debug times enabled?
- if (FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('debug_' . FrameworkBootstrap::getRequestTypeFromSystem() . '_output_timings') == 'Y') {
+ if (FrameworkBootstrap::getConfigurationInstance()->isEnabled('debug_' . FrameworkBootstrap::getRequestTypeFromSystem() . '_output_timings')) {
// Prepent it
$message = $this->getPrintableExecutionTime() . $message;
}
* @return $entry An array with database entries
* @throws NullPointerException If the database result is not found
* @throws InvalidDatabaseResultException If the database result is invalid
- * @todo Monolithic method, should be moved to proper classes
+ * @deprecated Monolithic method, should be moved to proper classes
*/
protected final function getDatabaseEntry () {
+ // This method is deprecated
+ $this->deprecationWarning('Monolithic method, should be moved to proper classes');
+
// Is there an instance?
if (!$this->getResultInstance() instanceof SearchableResult) {
// Throw an exception here
* @param $fieldName Field name which we shall get
* @return $fieldValue Field value from the user
* @throws NullPointerException If the result instance is null
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @deprecated Monolithic method, should be moved to proper classes
*/
public final function getField (string $fieldName) {
+ // Check parameter
+ if (empty($fieldName)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "fieldName" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
+
+ // This method is deprecated
+ $this->deprecationWarning('Monolithic method, should be moved to proper classes');
+
// Default field value
$fieldValue = NULL;
if ($this->isFieldSet($fieldName)) {
// Get it
$fieldValue = $fieldArray[$fieldName2];
- } elseif (FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('developer_mode_enabled')) {
+ } elseif (FrameworkBootstrap::getConfigurationInstance()->isEnabled('developer_mode')) {
// Missing field entry, may require debugging
self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('BASE-FRAMEWORK-SYSTEM: fieldArray<pre>=' . print_r($fieldArray, true) . '</pre>,fieldName=' . $fieldName . ' not found!');
} else {
* @param $fieldName Field name to check
* @return $isSet Whether the given field name is set
* @throws NullPointerException If the result instance is null
+ * @throws InvalidArgumentException If a parameter is not valid
*/
public function isFieldSet (string $fieldName) {
+ // Check parameter
+ if (empty($fieldName)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "fieldName" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
+
// Get result instance
$resultInstance = $this->getResultInstance();
*/
public function deprecationWarning (string $message) {
// Is developer mode active?
- if (FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('developer_mode_enabled')) {
+ if (FrameworkBootstrap::getConfigurationInstance()->isEnabled('developer_mode')) {
// Debug instance is there?
if (!is_null($this->getDebugInstance())) {
// Output stub message
*
* @param $phpExtension The PHP extension we shall check
* @return $isLoaded Whether the PHP extension is loaded
+ * @throws InvalidArgumentException If a parameter is not valid
*/
public final function isPhpExtensionLoaded (string $phpExtension) {
+ // Check parameter
+ if (empty($phpExtension)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "phpExtension" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
+
// Is it loaded?
$isLoaded = in_array($phpExtension, get_loaded_extensions());
* Idles (sleeps) for given milliseconds
*
* @return $hasSlept Whether it goes fine
+ * @throws InvalidArgumentException If a parameter is not valid
*/
public function idle (int $milliSeconds) {
+ // Check parameter
+ if ($milliSeconds < 1) {
+ // Throw IAE
+ throw new InvalidArgumentException(sprintf('milliSeconds=%d are not a reasonable value to idle', $milliSeconds));
+ }
+
// Sleep is fine by default
$hasSlept = true;
*
* @param $encodedData Encoded data we shall check
* @return $isBase64 Whether the encoded data is Base64
+ * @throws InvalidArgumentException If a parameter is not valid
*/
protected function isBase64Encoded (string $encodedData) {
+ // Check parameter
+ if (empty($encodedData)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "encodedData" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
+
// Determine it
$isBase64 = (@base64_decode($encodedData, true) !== false);
return $isBase64;
}
- /**
- * Gets a cache key from Criteria instance
- *
- * @param $criteriaInstance An instance of a Criteria class
- * @param $onlyKeys Only use these keys for a cache key
- * @return $cacheKey A cache key suitable for lookup/storage purposes
- */
- protected function getCacheKeyByCriteria (Criteria $criteriaInstance, array $onlyKeys = []) {
- // Generate it
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('BASE-FRAMEWORK-SYSTEM: criteriaInstance=' . $criteriaInstance->__toString() . ',onlyKeys()=' . count($onlyKeys) . ' - CALLED!');
- $cacheKey = sprintf('%s@%s',
- $this->__toString(),
- $criteriaInstance->getCacheKey($onlyKeys)
- );
-
- // And return it
- //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('BASE-FRAMEWORK-SYSTEM: cacheKey=' . $cacheKey . ' - EXIT!');
- return $cacheKey;
- }
-
/**
* Getter for startup time in miliseconds
*
return $executionTime;
}
- /**
- * Hashes a given string with a simple but stronger hash function (no salt)
- * and hex-encode it.
- *
- * @param $str The string to be hashed
- * @return $hash The hash from string $str
- */
- public static final function hash (string $str) {
- // Hash given string with (better secure) hasher
- $hash = bin2hex(mhash(MHASH_SHA256, $str));
-
- // Return it
- return $hash;
- }
-
- /**
- * "Getter" for length of hash() output. This will be "cached" to speed up
- * things.
- *
- * @return $length Length of hash() output
- */
- public static final function getHashLength () {
- // Is it cashed?
- if (is_null(self::$hashLength)) {
- // No, then hash a string and save its length.
- self::$hashLength = strlen(self::hash('abc123'));
- }
-
- // Return it
- return self::$hashLength;
- }
-
/**
* Determines if an element is set in the generic array
*
* @param $key Key to check
* @param $element Element to check
* @return $isset Whether the given key is set
- */
- protected final function isGenericArrayElementSet (string $keyGroup, string $subGroup, $key, $element) {
- // Debug message
- //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element);
+ * @throws InvalidArgumentException If a parameter is not valid
+ */
+ protected final function isGenericArrayElementSet (string $keyGroup, string $subGroup, string $key, string $element) {
+ // Check parameter
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif ($element === '') {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "element" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
// Is it there?
+ //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element);
$isset = isset($this->genericArray[$keyGroup][$subGroup][$key][$element]);
// Return it
* @param $subGroup Sub group for the key
* @param $key Key to check
* @return $isset Whether the given key is set
- */
- protected final function isGenericArrayKeySet (string $keyGroup, string $subGroup, $key) {
- // Debug message
- //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key);
+ * @throws InvalidArgumentException If a parameter is not valid
+ */
+ protected final function isGenericArrayKeySet (string $keyGroup, string $subGroup, string $key) {
+ // Check parameter
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
// Is it there?
+ //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key);
$isset = isset($this->genericArray[$keyGroup][$subGroup][$key]);
// Return it
return $isset;
}
-
/**
* Determines if a group is set in the generic array
*
* @param $keyGroup Main group
* @param $subGroup Sub group
* @return $isset Whether the given group is set
+ * @throws InvalidArgumentException If a parameter is not valid
*/
protected final function isGenericArrayGroupSet (string $keyGroup, string $subGroup) {
- // Debug message
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup);
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
// Is it there?
$isset = isset($this->genericArray[$keyGroup][$subGroup]);
* @param $keyGroup Main key group
* @param $subGroup Sub key group
* @return $array An array with all array elements
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
protected final function getGenericSubArray (string $keyGroup, string $subGroup) {
- // Is it there?
- if (!$this->isGenericArrayGroupSet($keyGroup, $subGroup)) {
+ // Check parameter
+ //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',value=' . print_r($this->genericArray[$keyGroup][$subGroup], true));
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayGroupSet($keyGroup, $subGroup)) {
// No, then abort here
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' not found.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s not found.', $keyGroup, $subGroup));
}
- // Debug message
- //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',value=' . print_r($this->genericArray[$keyGroup][$subGroup], true));
-
// Return it
return $this->genericArray[$keyGroup][$subGroup];
}
* @param $subGroup Sub group for the key
* @param $key Key to unset
* @return void
+ * @throws InvalidArgumentException If a parameter is not valid
*/
- protected final function unsetGenericArrayKey (string $keyGroup, string $subGroup, $key) {
- // Debug message
+ protected final function unsetGenericArrayKey (string $keyGroup, string $subGroup, string $key) {
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key);
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
// Remove it
unset($this->genericArray[$keyGroup][$subGroup][$key]);
* @param $key Key to unset
* @param $element Element to unset
* @return void
+ * @throws InvalidArgumentException If a parameter is not valid
*/
- protected final function unsetGenericArrayElement (string $keyGroup, string $subGroup, $key, $element) {
- // Debug message
+ protected final function unsetGenericArrayElement (string $keyGroup, string $subGroup, string $key, string $element) {
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element);
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif ($element === '') {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "element" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
// Remove it
unset($this->genericArray[$keyGroup][$subGroup][$key][$element]);
* @param $key Key to unset
* @param $value Value to add/append
* @return void
+ * @throws InvalidArgumentException If a parameter is not valid
*/
- protected final function appendStringToGenericArrayKey (string $keyGroup, string $subGroup, $key, string $value, $appendGlue = '') {
- // Debug message
+ protected final function appendStringToGenericArrayKey (string $keyGroup, string $subGroup, $key, string $value, string $appendGlue = '') {
+ // Check parameter
//* NOISY-DEBUG: */ if (!is_object($value)) $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',value[' . gettype($value) . ']=' . print_r($value, true) . ',appendGlue=' . $appendGlue);
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
// Is it already there?
if ($this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
// Append it
- $this->genericArray[$keyGroup][$subGroup][$key] .= $appendGlue . (string) $value;
+ $this->genericArray[$keyGroup][$subGroup][$key] .= $appendGlue . $value;
} else {
// Add it
- $this->genericArray[$keyGroup][$subGroup][$key] = (string) $value;
+ $this->genericArray[$keyGroup][$subGroup][$key] = $value;
}
}
* @param $element Element to check
* @param $value Value to add/append
* @return void
+ * @throws InvalidArgumentException If a parameter is not valid
*/
- protected final function appendStringToGenericArrayElement (string $keyGroup, string $subGroup, $key, $element, $value, $appendGlue = '') {
- // Debug message
+ protected final function appendStringToGenericArrayElement (string $keyGroup, string $subGroup, string $key, string $element, string $value, string $appendGlue = '') {
+ // Check parameter
//* NOISY-DEBUG: */ if (!is_object($value)) $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element . ',value[' . gettype($value) . ']=' . print_r($value, true) . ',appendGlue=' . $appendGlue);
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif ($element === '') {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "element" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
// Is it already there?
if ($this->isGenericArrayElementSet($keyGroup, $subGroup, $key, $element)) {
// Append it
- $this->genericArray[$keyGroup][$subGroup][$key][$element] .= $appendGlue . (string) $value;
+ $this->genericArray[$keyGroup][$subGroup][$key][$element] .= $appendGlue . $value;
} else {
// Add it
- $this->setStringGenericArrayElement($keyGroup, $subGroup, $key, $element, $value);
+ $this->setGenericArrayElement($keyGroup, $subGroup, $key, $element, $value);
}
}
- /**
- * Sets a string in a given generic array element
- *
- * @param $keyGroup Main group for the key
- * @param $subGroup Sub group for the key
- * @param $key Key to unset
- * @param $element Element to check
- * @param $value Value to add/append
- * @return void
- */
- protected final function setStringGenericArrayElement (string $keyGroup, string $subGroup, $key, $element, $value, $appendGlue = '') {
- // Debug message
- //* NOISY-DEBUG: */ if (!is_object($value)) $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element . ',value[' . gettype($value) . ']=' . print_r($value, true) . ',appendGlue=' . $appendGlue);
-
- // Set it
- $this->genericArray[$keyGroup][$subGroup][$key][$element] = (string) $value;
- }
-
/**
* Initializes given generic array group
*
* @param $key Key to use
* @param $forceInit Optionally force initialization
* @return void
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group has already been initialized
*/
protected final function initGenericArrayGroup (string $keyGroup, string $subGroup, bool $forceInit = false) {
- // Debug message
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',forceInit=' . intval($forceInit));
-
- // Is it already set?
- if (($forceInit === false) && ($this->isGenericArrayGroupSet($keyGroup, $subGroup))) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (($forceInit === false) && ($this->isGenericArrayGroupSet($keyGroup, $subGroup))) {
// Already initialized
- trigger_error(__METHOD__ . ':keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' already initialized.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s already initialized.', $keyGroup, $subGroup));
}
// Initialize it
* @param $key Key to use
* @param $forceInit Optionally force initialization
* @return void
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group has already been initialized
*/
protected final function initGenericArrayKey (string $keyGroup, string $subGroup, $key, bool $forceInit = false) {
- // Debug message
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',forceInit=' . intval($forceInit));
-
- // Is it already set?
- if (($forceInit === false) && ($this->isGenericArrayKeySet($keyGroup, $subGroup, $key))) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (($forceInit === false) && ($this->isGenericArrayKeySet($keyGroup, $subGroup, $key))) {
// Already initialized
- trigger_error(__METHOD__ . ':keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' already initialized.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s,key[%s]=%s already initialized.', $keyGroup, $subGroup, gettype($key), $key));
}
// Initialize it
* @param $element Element to use
* @param $forceInit Optionally force initialization
* @return void
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
- protected final function initGenericArrayElement (string $keyGroup, string $subGroup, $key, $element, bool $forceInit = false) {
- // Debug message
+ protected final function initGenericArrayElement (string $keyGroup, string $subGroup, string $key, string $element, bool $forceInit = false) {
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element . ',forceInit=' . intval($forceInit));
-
- // Is it already set?
- if (($forceInit === false) && ($this->isGenericArrayElementSet($keyGroup, $subGroup, $key, $element))) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif ($element === '') {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "element" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (($forceInit === false) && ($this->isGenericArrayElementSet($keyGroup, $subGroup, $key, $element))) {
// Already initialized
- trigger_error(__METHOD__ . ':keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element . ' already initialized.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s,key[%s]=%s,element[%s]=%s already initialized.', $keyGroup, $subGroup, gettype($key), $key, gettype($element), $element));
}
// Initialize it
}
/**
- * Pushes an element to a generic key
+ * Pushes an element to a generic key. If the key isn't found, it will be initialized.
*
* @param $keyGroup Main group for the key
* @param $subGroup Sub group for the key
* @param $key Key to use
* @param $value Value to add/append
* @return $count Number of array elements
+ * @throws InvalidArgumentException If a parameter is not valid
*/
- protected final function pushValueToGenericArrayKey (string $keyGroup, string $subGroup, $key, $value) {
- // Debug message
+ protected final function pushValueToGenericArrayKey (string $keyGroup, string $subGroup, string $key, $value) {
+ // Check parameter
//* NOISY-DEBUG: */ if (!is_object($value)) $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',value[' . gettype($value) . ']=' . print_r($value, true));
-
- // Is it set?
- if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
// Initialize array
$this->initGenericArrayKey($keyGroup, $subGroup, $key);
}
}
/**
- * Pushes an element to a generic array element
+ * Pushes an element to a generic array element. If the key isn't found, it will be initialized.
*
* @param $keyGroup Main group for the key
* @param $subGroup Sub group for the key
* @param $element Element to check
* @param $value Value to add/append
* @return $count Number of array elements
+ * @throws InvalidArgumentException If a parameter is not valid
*/
- protected final function pushValueToGenericArrayElement (string $keyGroup, string $subGroup, $key, $element, $value) {
- // Debug message
+ protected final function pushValueToGenericArrayElement (string $keyGroup, string $subGroup, string $key, string $element, $value) {
+ // Check parameter
//* NOISY-DEBUG: */ if (!is_object($value)) $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element . ',value[' . gettype($value) . ']=' . print_r($value, true));
-
- // Is it set?
- if (!$this->isGenericArrayElementSet($keyGroup, $subGroup, $key, $element)) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif ($element === '') {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "element" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayElementSet($keyGroup, $subGroup, $key, $element)) {
// Initialize array
$this->initGenericArrayElement($keyGroup, $subGroup, $key, $element);
}
* @param $subGroup Sub group for the key
* @param $key Key to unset
* @return $value Last "popped" value
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
- protected final function popGenericArrayElement (string $keyGroup, string $subGroup, $key) {
- // Debug message
+ protected final function popGenericArrayElement (string $keyGroup, string $subGroup, string $key) {
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key);
-
- // Is it set?
- if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
// Not found
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' not found.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s,key[%s]=%s not found.', $keyGroup, $subGroup, gettype($key), $key));
}
// Then "pop" it
* @param $keyGroup Main group for the key
* @param $subGroup Sub group for the key
* @param $key Key to unset
- * @return $value Last "popped" value
+ * @return $value Last "shifted" value
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
- protected final function shiftGenericArrayElement (string $keyGroup, string $subGroup, $key) {
- // Debug message
+ protected final function shiftGenericArrayElement (string $keyGroup, string $subGroup, string $key) {
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key);
-
- // Is it set?
- if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
// Not found
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' not found.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s,key[%s]=%s not found.', $keyGroup, $subGroup, gettype($key), $key));
}
// Then "shift" it
*
* @param $keyGroup Main group for the key
* @return $count Count of given group
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key group isn't there but this method is invoked
*/
- protected final function countGenericArray ($keyGroup) {
- // Debug message
+ protected final function countGenericArray (string $keyGroup) {
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup);
-
- // Is it there?
- if (!isset($this->genericArray[$keyGroup])) {
- // Abort here
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ' not found.');
- exit;
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!isset($this->genericArray[$keyGroup])) {
+ // Not found
+ throw new BadMethodCallException(sprintf('keyGroup=%s not found.', $keyGroup));
}
// Then count it
$count = count($this->genericArray[$keyGroup]);
- // Debug message
- //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',count=' . $count);
-
// Return it
+ //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',count=' . $count);
return $count;
}
* @param $keyGroup Main group for the key
* @param $subGroup Sub group for the key
* @return $count Count of given group
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
protected final function countGenericArrayGroup (string $keyGroup, string $subGroup) {
- // Debug message
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup);
-
- // Is it there?
- if (!$this->isGenericArrayGroupSet($keyGroup, $subGroup)) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayGroupSet($keyGroup, $subGroup)) {
// Abort here
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' not found.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s not found.', $keyGroup, $subGroup));
}
// Then count it
$count = count($this->genericArray[$keyGroup][$subGroup]);
- // Debug message
- //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',count=' . $count);
-
// Return it
+ //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',count=' . $count);
return $count;
}
*
* @param $keyGroup Main group for the key
* @param $subGroup Sub group for the key
- * @para $key Key to count
+ * @param $key Key to count
* @return $count Count of given key
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
- protected final function countGenericArrayElements (string $keyGroup, string $subGroup, $key) {
- // Debug message
+ protected final function countGenericArrayElements (string $keyGroup, string $subGroup, string $key) {
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key);
-
- // Is it there?
- if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
// Abort here
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' not found.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s,key[%s]=%s not found.', $keyGroup, $subGroup, gettype($key), $key));
} elseif (!$this->isValidGenericArrayGroup($keyGroup, $subGroup)) {
// Not valid
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ' is not an array.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s is not a valid key/sub group.', $keyGroup, $subGroup));
}
// Then count it
$count = count($this->genericArray[$keyGroup][$subGroup][$key]);
- // Debug message
- //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',count=' . $count);
-
// Return it
+ //* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',count=' . $count);
return $count;
}
*
* @param $keyGroup Key group to get
* @return $array Whole generic array group
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
- protected final function getGenericArray ($keyGroup) {
- // Debug message
+ protected final function getGenericArray (string $keyGroup) {
+ // Check parameters
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup);
-
- // Is it there?
- if (!isset($this->genericArray[$keyGroup])) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!isset($this->genericArray[$keyGroup])) {
// Then abort here
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ' does not exist.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s not found', $keyGroup));
}
// Return it
* @param $key Key to unset
* @param $value Mixed value from generic array element
* @return void
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
- protected final function setGenericArrayKey (string $keyGroup, string $subGroup, $key, $value) {
- // Debug message
+ protected final function setGenericArrayKey (string $keyGroup, string $subGroup, string $key, $value) {
+ // Check parameters
//* NOISY-DEBUG: */ if (!is_object($value)) $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',value[' . gettype($value) . ']=' . print_r($value, true));
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isValidGenericArrayGroup($keyGroup, $subGroup)) {
+ // Then abort here
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s not found', $keyGroup));
+ }
// Set value here
$this->genericArray[$keyGroup][$subGroup][$key] = $value;
* @param $subGroup Sub group for the key
* @param $key Key to unset
* @return $value Mixed value from generic array element
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
- protected final function getGenericArrayKey (string $keyGroup, string $subGroup, $key) {
- // Debug message
+ protected final function getGenericArrayKey (string $keyGroup, string $subGroup, string $key) {
+ // Check parameters
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key);
-
- // Is it there?
- if (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) {
// Then abort here
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ' does not exist.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s,key[%s]=%s not found.', $keyGroup, $subGroup, gettype($key), $key));
}
// Return it
* @param $element Element to set
* @param $value Value to set
* @return void
+ * @throws InvalidArgumentException If a parameter is not valid
*/
- protected final function setGenericArrayElement (string $keyGroup, string $subGroup, $key, $element, $value) {
- // Debug message
+ protected final function setGenericArrayElement (string $keyGroup, string $subGroup, string $key, string $element, $value) {
+ // Check parameter
//* NOISY-DEBUG: */ if (!is_object($value)) $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element . ',value[' . gettype($value) . ']=' . print_r($value, true));
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif ($element === '') {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "element" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayElementSet($keyGroup, $subGroup, $key, $element)) {
+ // Initialize array
+ $this->initGenericArrayElement($keyGroup, $subGroup, $key, $element);
+ }
// Then set it
$this->genericArray[$keyGroup][$subGroup][$key][$element] = $value;
* @param $key Key to look for
* @param $element Element to look for
* @return $value Mixed value from generic array element
+ * @throws InvalidArgumentException If a parameter is not valid
+ * @throws BadMethodCallException If key/sub group isn't there but this method is invoked
*/
- protected final function getGenericArrayElement (string $keyGroup, string $subGroup, $key, $element) {
- // Debug message
+ protected final function getGenericArrayElement (string $keyGroup, string $subGroup, string $key, string $element) {
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element);
-
- // Is it there?
- if (!$this->isGenericArrayElementSet($keyGroup, $subGroup, $key, $element)) {
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif ($element === '') {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "element" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (!$this->isGenericArrayElementSet($keyGroup, $subGroup, $key, $element)) {
// Then abort here
- trigger_error(__METHOD__ . ': keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key . ',element=' . $element . ' does not exist.');
- exit;
+ throw new BadMethodCallException(sprintf('keyGroup=%s,subGroup=%s,key[%s]=%s,element[%s]=%s not found.', $keyGroup, $subGroup, gettype($key), $key, gettype($element), $element));
}
// Return it
* @param $keyGroup Key group to get
* @param $subGroup Sub group for the key
* @return $isValid Whether given sub group is valid
+ * @throws InvalidArgumentException If a parameter is not valid
*/
protected final function isValidGenericArrayGroup (string $keyGroup, string $subGroup) {
- // Debug message
+ // Check parameter
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup);
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
// Determine it
$isValid = (($this->isGenericArrayGroupSet($keyGroup, $subGroup)) && (is_array($this->getGenericSubArray($keyGroup, $subGroup))));
* @param $key Key to check
* @return $isValid Whether given sub group is valid
*/
- protected final function isValidGenericArrayKey (string $keyGroup, string $subGroup, $key) {
- // Debug message
+ protected final function isValidGenericArrayKey (string $keyGroup, string $subGroup, string $key) {
+ // Check parameters
//* NOISY-DEBUG: */ $this->outputLine('[' . __METHOD__ . ':' . __LINE__ . '] keyGroup=' . $keyGroup . ',subGroup=' . $subGroup . ',key=' . $key);
+ if (empty($keyGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "keyGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($subGroup)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "subGroup" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ } elseif (empty($key)) {
+ // Throw IAE
+ throw new InvalidArgumentException('Parameter "key" is empty', FrameworkInterface::EXCEPTION_INVALID_ARGUMENT);
+ }
// Determine it
$isValid = (($this->isGenericArrayKeySet($keyGroup, $subGroup, $key)) && (is_array($this->getGenericArrayKey($keyGroup, $subGroup, $key))));
* @return $translated Translated boolean value
*/
public static final function translateBooleanToYesNo (bool $boolean) {
- // Make sure it is really boolean
- assert(is_bool($boolean));
-
// "Translate" it
$translated = ($boolean === true) ? 'Y' : 'N';