| 
<?php
 /**
 * Page DocBlock definition
 * @package org.zadara.marius.pax
 */
 
 
 /**
 * Class definition for a hash-map.
 * This class will contain associations between variables and theirs value.
 *
 * @author Marius Zadara <[email protected]>
 * @category Classes
 * @copyright (C) 2008-2009 Marius Zadara
 * @license Free for non-comercial use
 * @package org.zadara.marius.pax
 * @final
 * @see PAXObject
 * @see IConfig
 * @version 6.0
 * @since 5.0
 */
 final class Config extends PAXObject implements IConfig
 {
 /**
 * The hash-map associations array.
 *
 * @access private
 * @var array
 */
 private $hashmap;
 
 /**
 * Class constructor.
 *
 * @access public
 */
 public function __construct()
 {
 // call the parent's constructor first
 parent::__construct();
 
 // init the hash-map
 // at this moment set it to NULL to preserve memory
 $this->hashmap = null;
 }
 
 /**
 * Method to set a variable to a value in the hash-map.
 * If the key already exists, the value wil be updated.
 *
 * @access public
 * @param string <b>$variable</b> The variable name
 * @param mixed <b>$value</b> The variable value
 * @return void
 */
 public function set($variable, $value)
 {
 // check the hash-map
 if (is_null($this->hashmap))
 $this->hashmap = array();
 
 // set the variable to its value
 $this->hashmap[$variable] = $value;
 }
 
 /**
 * Method to get the variabile value from the hash-map.
 *
 * @access public
 * @param string <b>$variable</b> The variable name
 * @param mixed <b>$defaultValue</b> The variable default value (used in case the variabile has not been found)
 * @return mixed The value of the variables as defined
 */
 public function get($variable, $defaultValue=NULL)
 {
 // if the hash-map has not been set,
 // return the default value
 if (is_null($this->hashmap))
 return $defaultValue;
 
 // if the variable is not set in the hash-map,
 // return the default value
 if (!isset($this->hashmap[$variable]))
 return $defaultValue;
 
 // at this point, the variable is set
 // return its value from the hash-map
 return $this->hashmap[$variable];
 }
 
 /**
 * Method to return only the keys.
 *
 * @access public
 * @return array The list of all the keys
 */
 public function getKeys()
 {
 if (is_null($this->hashmap))
 return false;
 
 if (!is_array($this->hashmap))
 return false;
 
 return array_keys($this->hashmap);
 }
 
 
 /**
 * Method to return only the values.
 *
 * @access public
 * @return array The list of all the values
 */
 public function getValues()
 {
 if (is_null($this->hashmap))
 return false;
 
 if (!is_array($this->hashmap))
 return false;
 
 return array_values($this->hashmap);
 }
 
 
 /**
 * Method to delete a key.
 *
 * @access public
 * @param string <b>$key</b> The name of the key
 * @return boolean True/False if the key has been deleted
 */
 public function deleteKey($key)
 {
 if (is_null($this->hashmap))
 return false;
 
 if (!is_array($this->hashmap))
 return false;
 
 if (isset($this->hashmap[$key]))
 {
 unset($this->hashmap[$key]);
 return true;
 }
 
 return false;
 }
 
 
 /**
 * Method to delete the keys matching a pattern.
 * The match is performed case insensitive.
 *
 * @access public
 * @param string <b>$pattern</b> The pattern to use when searching for the keys
 * @return boolean True/False if the key(s) has been deleted
 */
 public function deleteKeysLike($pattern)
 {
 if (is_null($this->hashmap))
 return false;
 
 if (!is_array($this->hashmap))
 return false;
 
 $keysDeleted = false;
 
 // parse the hash-map list
 foreach ($this->hashmap as $keyName => $keyValue)
 {
 // search the pattern inside the key name
 if (stripos($keyName, $pattern) !== false)
 {
 // if found, then try to delete the key
 if ($this->deleteKey($keyName))
 $keysDeleted = true;
 }
 }
 
 return $keysDeleted;
 }
 
 
 /**
 * Method to get the key-value pairs from the hash-map.
 * Due to construction of the hash-map, will return the content of te hash-map.
 *
 * @access public
 * @return array The object's content
 */
 public function getKeyValuePairs()
 {
 if (is_null($this->hashmap))
 return false;
 
 if (!is_array($this->hashmap))
 return false;
 
 return $this->hashmap;
 }
 
 
 /**
 * Method to search if a key exists.
 *
 * @access public
 * @param string <b>$key</b> The key searched
 * @return boolean True/False if the key has been found or not
 */
 public function keyExists($key)
 {
 if (is_null($this->hashmap))
 return false;
 
 if (!is_array($this->hashmap))
 return false;
 
 return isset($this->hashmap[$key]);
 }
 
 
 
 
 /**
 * Class destructor.
 *
 * @access public
 */
 function __destruct()
 {
 // nothing special to do at this moment
 }
 }
 
 
 ?>
 |