/** * 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; }