validateValue($value);
if (!empty($value) && !$this->isValueInArray($value)) {
$return = TRUE;
$this->addItemToSet($value);
}
return $return;
}
/**
* Returns the set
*
* @return array
*/
public function getItems(){
return $this->items;
}
/**
* Checks if a value always in the set
*
* @param mixed $value
* @return boolean
*/
protected function isValueInArray($value){
$return = FALSE;
$items = & $this->getItems();
foreach ($items as $itemValue) {
if ($this->compareTwoValues($itemValue, $value)) {
$return = TRUE;
break;
}
}
return $return;
}
/**
* Adds one item to the set directly
*
* @param unknown_type $value
*/
private function addItemToSet($value){
$this->items[] = $value;
}
/**
* Abstract method
* Must be implemented
*
* Validates the incomming value for the set
*
* @param mixed $value
*/
protected abstract function validateValue($value);
/**
* Abtract method
* Must be implemented
*
* Compares two values
*
* @param mixed $value1
* @param mixed $value2
*/
protected abstract function compareTwoValues($value1, $value2);
}
/**
* Set of type 'int'
*
*/
class intSet extends Set {
protected function validateValue($value){
$value = intval($value);
return $value;
}
protected function compareTwoValues($value1, $value2){
$return = FALSE;
if ($value1 === $value2) {
$return = TRUE;
}
return $return;
}
}
/**
* Set of type 'array'
*
*/
class arraySet extends Set {
protected function validateValue($value){
if (!is_array($value)) {
$value = array($value);
}
return $value;
}
protected function compareTwoValues($value1, $value2){
$return = FALSE;
$arrayDiff = array_diff($value1, $value2);
if (empty($arrayDiff)) {
$return = TRUE;
}
return $return;
}
}
/**
* Set of type 'string'
*
*/
class stringSet extends Set {
protected function validateValue($value){
// String checken
if (!is_string($value)) {
$value = (string) $value;
}
return $value;
}
protected function compareTwoValues($value1, $value2){
$return = FALSE;
if ($value1 === $value2) {
$return = TRUE;
}
return $return;
}
}
/**
* Example code
*/
echo 'Begin: intSet
-------
';
$intSet = new intSet();
$intSet->addItem("Test String");
$intSet->addItem(5);
$intSet->addItem(5);
$intSet->addItem(array("Test String", 5));
echo '
'.print_r($intSet->getItems(), 1).'
'.print_r($arraySet->getItems(), 1).'
'.print_r($stringSet->getItems(), 1).'