示例#1
0
 /**
  * This method puts the key/value mapping to the collection.
  *
  * @access public
  * @override
  * @param mixed $key                                        the key to be mapped
  * @param mixed $value                                      the value to be mapped
  * @return boolean                                          whether the key/value pair was set
  */
 public function putEntry($key, $value)
 {
     try {
         if (Core\Data\Undefined::instance()->__equals($value)) {
             return $this->removeKey($key);
         } else {
             $key = $this->getKey($key);
             if (isset($this->schema['properties'][$key])) {
                 $definition = $this->schema['properties'][$key];
                 if (isset($definition['type'])) {
                     switch ($definition['type']) {
                         case 'array':
                             $value = MappingService\Data\Model\JSON\Helper::resolveArrayValue($value, $definition);
                             break;
                         case 'boolean':
                             $value = MappingService\Data\Model\JSON\Helper::resolveBooleanValue($value, $definition);
                             break;
                         case 'integer':
                             $value = MappingService\Data\Model\JSON\Helper::resolveIntegerValue($value, $definition);
                             break;
                         case 'number':
                             $value = MappingService\Data\Model\JSON\Helper::resolveNumberValue($value, $definition);
                             break;
                         case 'null':
                             $value = MappingService\Data\Model\JSON\Helper::resolveNullValue($value, $definition);
                             break;
                         case 'object':
                             $value = MappingService\Data\Model\JSON\Helper::resolveObjectValue($value, $definition);
                             break;
                         case 'string':
                             $value = MappingService\Data\Model\JSON\Helper::resolveStringValue($value, $definition);
                             break;
                     }
                 }
                 $this->elements[$key] = $value;
                 return true;
             }
             return false;
         }
     } catch (\Exception $ex) {
         return false;
     }
 }
示例#2
0
 /**
  * This method replaces the value at the specified index.
  *
  * @access public
  * @param integer $index                                    the index of the element to be set
  * @param mixed $value                                      the value to be set
  * @return boolean                                          whether the value was set
  * @throws Throwable\InvalidArgument\Exception              indicates that index must be an integer
  */
 public function setValue($index, $value)
 {
     if (is_integer($index)) {
         if (array_key_exists($index, $this->elements)) {
             if (isset($this->schema['items'][0])) {
                 $definition = $this->schema['items'][0];
                 if (isset($definition['type'])) {
                     switch ($definition['type']) {
                         case 'array':
                             $value = MappingService\Data\Model\JSON\Helper::resolveArrayValue($value, $definition);
                             break;
                         case 'boolean':
                             $value = MappingService\Data\Model\JSON\Helper::resolveBooleanValue($value, $definition);
                             break;
                         case 'integer':
                             $value = MappingService\Data\Model\JSON\Helper::resolveIntegerValue($value, $definition);
                             break;
                         case 'number':
                             $value = MappingService\Data\Model\JSON\Helper::resolveNumberValue($value, $definition);
                             break;
                         case 'null':
                             $value = MappingService\Data\Model\JSON\Helper::resolveNullValue($value, $definition);
                             break;
                         case 'object':
                             $value = MappingService\Data\Model\JSON\Helper::resolveObjectValue($value, $definition);
                             break;
                         case 'string':
                             $value = MappingService\Data\Model\JSON\Helper::resolveStringValue($value, $definition);
                             break;
                     }
                 }
             }
             $this->elements[$index] = $value;
             return true;
         } else {
             if ($index == $this->count()) {
                 $this->addValue($value);
                 return true;
             }
         }
         return false;
     }
     throw new Throwable\InvalidArgument\Exception('Unable to set element. Expected an integer, but got ":index" of type ":type".', array(':index' => $index, ':type' => Core\DataType::info($index)->type));
 }