Example #1
0
 protected function filterValue($value, Protobuf\Field $field)
 {
     switch ($field->getType()) {
         case Protobuf::TYPE_MESSAGE:
             // Tell apart encoding and decoding
             if ($value instanceof Protobuf\Message) {
                 return $this->encodeMessage($value);
             } else {
                 $nested = $field->getReference();
                 return $this->decodeMessage(new $nested(), $value);
             }
         case Protobuf::TYPE_BOOL:
             if ($value === true || $value === false) {
                 return $value;
             }
             return filter_var($value, FILTER_VALIDATE_BOOLEAN);
         case Protobuf::TYPE_STRING:
         case Protobuf::TYPE_BYTES:
             return (string) $value;
         case Protobuf::TYPE_FLOAT:
         case Protobuf::TYPE_DOUBLE:
             return filter_var($value, FILTER_VALIDATE_FLOAT, FILTER_NULL_ON_FAILURE);
             // Assume the rest are ints
         // Assume the rest are ints
         default:
             return filter_var($value, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
     }
 }
Example #2
0
 protected function filterValue($value, Protobuf\Field $field)
 {
     switch ($field->getType()) {
         case Protobuf\Protobuf::TYPE_MESSAGE:
             // Tell apart encoding and decoding
             if ($value instanceof Protobuf\MessageInterface) {
                 return $this->encodeMessage($value);
             } else {
                 // Check if we are decoding in lazy mode
                 if ($this->getOption('lazy')) {
                     $lazy = new Protobuf\LazyValue();
                     $lazy->codec = $this;
                     $lazy->descriptor = $field;
                     $lazy->value = $value;
                     return $lazy;
                 } else {
                     $nested = $field->getReference();
                     return $this->decodeMessage(new $nested(), $value);
                 }
             }
         case Protobuf\Protobuf::TYPE_BOOL:
             if ($value === true || $value === false) {
                 return $value;
             }
             return filter_var($value, FILTER_VALIDATE_BOOLEAN);
         case Protobuf\Protobuf::TYPE_STRING:
         case Protobuf\Protobuf::TYPE_BYTES:
             return (string) $value;
         case Protobuf\Protobuf::TYPE_FLOAT:
         case Protobuf\Protobuf::TYPE_DOUBLE:
             return filter_var($value, FILTER_VALIDATE_FLOAT, FILTER_NULL_ON_FAILURE);
         case Protobuf\Protobuf::TYPE_ENUM:
             $nested = $field->getReference();
             $reference = new $nested();
             if (!is_null($ref_value = $reference->__get($value))) {
                 $value = $ref_value;
             }
             return filter_var($value, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
             // Assume the rest are ints
         // Assume the rest are ints
         default:
             return filter_var($value, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
     }
 }
 /**
  * Map dispatcher
  * @param  \DrSlump\Protobuf\Field   $descriptor
  * @param  \App_ListFilter_Interface $filter
  * @return mixed
  */
 protected function _mapData(\DrSlump\Protobuf\Field $descriptor, \App_ListFilter_Interface $filter, \App_ListFilter $filterList)
 {
     switch ($descriptor->getType()) {
         //It's a message
         case 11:
             return $this->_mapMessageValue($descriptor, $filter, $filterList);
             //It's a enum
         //It's a enum
         case 14:
             return $this->_mapEnumValue($descriptor, $filter, $filterList);
             //It's a simple value
         //It's a simple value
         default:
             return $this->_mapSimpleValue($descriptor, $filter, $filterList);
     }
 }