Esempio n. 1
0
 /**
  * Configure a Value parameter, based on the supplied object-type value
  *
  * @todo Re-use one Mapper instance
  *
  * @param \google\appengine\datastore\v4\Value $obj_val
  * @param object $mix_value
  */
 protected function configureObjectValueParamForQuery($obj_val, $mix_value)
 {
     if ($mix_value instanceof Entity) {
         $this->createMapper()->configureGoogleKey($obj_val->mutableKeyValue(), $mix_value);
     } elseif ($mix_value instanceof \DateTime) {
         $obj_val->setTimestampMicrosecondsValue($mix_value->format('Uu'));
     } elseif (method_exists($mix_value, '__toString')) {
         $obj_val->setStringValue($mix_value->__toString());
     } else {
         throw new \InvalidArgumentException('Unexpected, non-string-able object parameter: ' . get_class($mix_value));
     }
 }
 /**
  * Auto detect & extract a value
  *
  * @todo expand auto detect types
  *
  * @param Value $obj_property
  * @return mixed
  */
 protected function extractAutoDetectValue($obj_property)
 {
     if ($obj_property->hasStringValue()) {
         return $obj_property->getStringValue();
     }
     if ($obj_property->hasIntegerValue()) {
         return $obj_property->getIntegerValue();
     }
     if ($obj_property->hasTimestampMicrosecondsValue()) {
         return $this->extractDatetimeValue($obj_property);
     }
     if ($obj_property->hasDoubleValue()) {
         return $obj_property->getDoubleValue();
     }
     if ($obj_property->hasBooleanValue()) {
         return $obj_property->getBooleanValue();
     }
     if ($obj_property->getListValueSize() > 0) {
         return $this->extractStringListValue($obj_property);
     }
     // $this->extractPropertyValue($int_field_type, $obj_property); // Recursive detection call
     return null;
 }