本文整理汇总了PHP中Guzzle\Service\Description\Parameter::getType方法的典型用法代码示例。如果您正苦于以下问题:PHP Parameter::getType方法的具体用法?PHP Parameter::getType怎么用?PHP Parameter::getType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Guzzle\Service\Description\Parameter
的用法示例。
在下文中一共展示了Parameter::getType方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: addXml
protected function addXml(\XMLWriter $xmlWriter, Parameter $param, $value)
{
if ($value === null) {
return;
}
$value = $param->filter($value);
$type = $param->getType();
$name = $param->getWireName();
$prefix = null;
$namespace = $param->getData('xmlNamespace');
if (false !== strpos($name, ':')) {
list($prefix, $name) = explode(':', $name, 2);
}
if ($type == 'object' || $type == 'array') {
if (!$param->getData('xmlFlattened')) {
$xmlWriter->startElementNS(null, $name, $namespace);
}
if ($param->getType() == 'array') {
$this->addXmlArray($xmlWriter, $param, $value);
} elseif ($param->getType() == 'object') {
$this->addXmlObject($xmlWriter, $param, $value);
}
if (!$param->getData('xmlFlattened')) {
$xmlWriter->endElement();
}
return;
}
if ($param->getData('xmlAttribute')) {
$this->writeAttribute($xmlWriter, $prefix, $name, $namespace, $value);
} else {
$this->writeElement($xmlWriter, $prefix, $name, $namespace, $value);
}
}
示例2: customResolver
/**
* Map nested parameters into the location_key based parameters
*
* @param array $value Value to map
* @param Parameter $param Parameter that holds information about the current key
* @param array $query Built up query string values
* @param string $prefix String to prepend to sub query values
*/
protected function customResolver($value, Parameter $param, array &$query, $prefix = '')
{
if ($param->getType() == 'object') {
foreach ($value as $name => $v) {
if ($subParam = $param->getProperty($name)) {
$key = $prefix . '.' . $subParam->getWireName();
if (is_array($v)) {
$this->customResolver($v, $subParam, $query, $key);
} else {
$query[$key] = $v;
}
}
}
} elseif ($param->getType() == 'array') {
$offset = $param->getData('offset') ?: 0;
foreach ($value as $index => $v) {
$index += $offset;
if (is_array($v) && ($items = $param->getItems())) {
$this->customResolver($v, $items, $query, $prefix . '.' . $index);
} else {
$query[$prefix . '.' . $index] = $v;
}
}
} else {
$query[$prefix] = $value;
}
}
示例3: recursiveProcess
/**
* Recursively process a parameter while applying filters
*
* @param Parameter $param API parameter being validated
* @param mixed $value Value to validate and process. The value may change during this process.
*/
protected function recursiveProcess(Parameter $param, &$value)
{
if ($value === null) {
return;
}
if (is_array($value)) {
$type = $param->getType();
if ($type == 'array') {
foreach ($value as &$item) {
$this->recursiveProcess($param->getItems(), $item);
}
} elseif ($type == 'object' && !isset($value[0])) {
// On the above line, we ensure that the array is associative and not numerically indexed
if ($properties = $param->getProperties()) {
foreach ($properties as $property) {
$name = $property->getName();
$key = $property->getWireName();
if (isset($value[$key])) {
$this->recursiveProcess($property, $value[$key]);
if ($key != $name) {
$value[$name] = $value[$key];
unset($value[$key]);
}
}
}
}
}
}
$value = $param->filter($value);
}
示例4: resolveRecursively
protected function resolveRecursively(array $value, Parameter $param)
{
foreach ($value as $name => &$v) {
switch ($param->getType()) {
case 'object':
if ($subParam = $param->getProperty($name)) {
$key = $subParam->getWireName();
$value[$key] = $this->prepareValue($v, $subParam);
if ($name != $key) {
unset($value[$name]);
}
} elseif ($param->getAdditionalProperties() instanceof Parameter) {
$v = $this->prepareValue($v, $param->getAdditionalProperties());
}
break;
case 'array':
if ($items = $param->getItems()) {
$v = $this->prepareValue($v, $items);
}
break;
}
}
return $param->filter($value);
}
示例5: visit
/**
* {@inheritdoc}
*/
public function visit(CommandInterface $command, Response $response, Parameter $param, &$value, $context = null)
{
if ($param->getType() == 'object' && $param->getAdditionalProperties() instanceof Parameter) {
$this->processPrefixedHeaders($response, $param, $value);
} else {
$value[$param->getName()] = (string) $response->getHeader($param->getWireName());
}
}
示例6: visit
/**
* {@inheritdoc}
*/
public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
{
if ($param->getType() == 'object' && $param->getAdditionalProperties() instanceof Parameter) {
$this->addPrefixedHeaders($request, $param, $value);
} else {
$request->setHeader($param->getWireName(), $value);
}
}
示例7: customResolver
/**
* Map nested parameters into the location_key based parameters
*
* @param array $value Value to map
* @param Parameter $param Parameter that holds information about the current key
* @param array $query Built up query string values
* @param string $prefix String to prepend to sub query values
*/
protected function customResolver($value, Parameter $param, array &$query, $prefix = '')
{
switch ($param->getType()) {
case 'object':
$this->resolveObject($param, $value, $prefix, $query);
break;
case 'array':
$this->resolveArray($param, $value, $prefix, $query);
break;
default:
$query[$prefix] = $param->filter($value);
}
}
示例8: createEmbeddedModel
/**
* {@inheritdoc}
*/
public function createEmbeddedModel(CommandInterface $command, Parameter $structure, array $data)
{
if ($structure->getType() === 'array') {
// we're actually building an array of models
return $this->createEmbeddedModelArray($command, $structure, $data);
}
if (isset($structure->extends)) {
$structure->setName($structure->extends);
}
$embeddedCommand = $this->factory->factory($command, $data);
$processedData = $this->process($embeddedCommand, $structure, $data);
return new Model($processedData, $structure);
}
示例9: recursiveProcess
protected function recursiveProcess(Parameter $param, &$value)
{
$type = $param->getType();
if (!is_array($value)) {
if ($type == 'array') {
$this->recursiveProcess($param->getItems(), $value);
$value = array($value);
}
} elseif ($type == 'object') {
$this->processObject($param, $value);
} elseif ($type == 'array') {
$this->processArray($param, $value);
}
if ($value !== null) {
$value = $param->filter($value);
}
}
示例10: recursiveProcess
/**
* Recursively process a parameter while applying filters
*
* @param Parameter $param API parameter being processed
* @param mixed $value Value to validate and process. The value may change during this process.
*/
protected function recursiveProcess(Parameter $param, &$value)
{
$type = $param->getType();
if (!is_array($value)) {
if ($type == 'array') {
// Cast to an array if the value was a string, but should be an array
$this->recursiveProcess($param->getItems(), $value);
$value = array($value);
}
} elseif ($type == 'object') {
$this->processObject($param, $value);
} elseif ($type == 'array') {
$this->processArray($param, $value);
}
if ($value !== null) {
$value = $param->filter($value);
}
}
示例11: recursiveProcess
protected function recursiveProcess(Parameter $param, &$value)
{
if ($value === null) {
return;
}
if (is_array($value)) {
$type = $param->getType();
if ($type == 'array') {
foreach ($value as &$item) {
$this->recursiveProcess($param->getItems(), $item);
}
} elseif ($type == 'object' && !isset($value[0])) {
$knownProperties = array();
if ($properties = $param->getProperties()) {
foreach ($properties as $property) {
$name = $property->getName();
$key = $property->getWireName();
$knownProperties[$name] = 1;
if (isset($value[$key])) {
$this->recursiveProcess($property, $value[$key]);
if ($key != $name) {
$value[$name] = $value[$key];
unset($value[$key]);
}
}
}
}
if ($param->getAdditionalProperties() === false) {
$value = array_intersect_key($value, $knownProperties);
} elseif (($additional = $param->getAdditionalProperties()) !== true) {
foreach ($value as &$v) {
$this->recursiveProcess($additional, $v);
}
}
}
}
$value = $param->filter($value);
}
示例12: recursiveProcess
/**
* Recursively process a parameter while applying filters
*
* @param Parameter $param API parameter being validated
* @param mixed $value Value to validate and process. The value may change during this process.
*/
protected function recursiveProcess(Parameter $param, &$value)
{
if ($value === null) {
return;
}
if (is_array($value)) {
$type = $param->getType();
if ($type == 'array') {
foreach ($value as &$item) {
$this->recursiveProcess($param->getItems(), $item);
}
} elseif ($type == 'object' && !isset($value[0])) {
// On the above line, we ensure that the array is associative and not numerically indexed
$knownProperties = array();
if ($properties = $param->getProperties()) {
foreach ($properties as $property) {
$name = $property->getName();
$key = $property->getWireName();
$knownProperties[$name] = 1;
if (isset($value[$key])) {
$this->recursiveProcess($property, $value[$key]);
if ($key != $name) {
$value[$name] = $value[$key];
unset($value[$key]);
}
}
}
}
// Remove any unknown and potentially unsafe properties
if ($param->getAdditionalProperties() === false) {
$value = array_intersect_key($value, $knownProperties);
} elseif (($additional = $param->getAdditionalProperties()) !== true) {
// Validate and filter additional properties
foreach ($value as &$v) {
$this->recursiveProcess($additional, $v);
}
}
}
}
$value = $param->filter($value);
}
示例13: testCanBuildUpParams
public function testCanBuildUpParams()
{
$p = new Parameter(array());
$p->setName('foo')->setDescription('c')->setFilters(array('d'))->setLocation('e')->setSentAs('f')->setMaxLength(1)->setMinLength(1)->setMinimum(2)->setMaximum(2)->setMinItems(3)->setMaxItems(3)->setRequired(true)->setStatic(true)->setDefault('h')->setType('i');
$p->addFilter('foo');
$this->assertEquals('foo', $p->getName());
$this->assertEquals('h', $p->getDefault());
$this->assertEquals('c', $p->getDescription());
$this->assertEquals(array('d', 'foo'), $p->getFilters());
$this->assertEquals('e', $p->getLocation());
$this->assertEquals('f', $p->getSentAs());
$this->assertEquals(1, $p->getMaxLength());
$this->assertEquals(1, $p->getMinLength());
$this->assertEquals(2, $p->getMaximum());
$this->assertEquals(2, $p->getMinimum());
$this->assertEquals(3, $p->getMaxItems());
$this->assertEquals(3, $p->getMinItems());
$this->assertEquals(true, $p->getRequired());
$this->assertEquals(true, $p->getStatic());
$this->assertEquals('i', $p->getType());
}
示例14: addXml
/**
* Recursively build the XML body
*
* @param \SimpleXMLElement $xml XML to modify
* @param Parameter $param API Parameter
* @param mixed $value Value to add
*/
protected function addXml(\SimpleXMLElement $xml, Parameter $param, $value)
{
// Determine the name of the element
$node = $param->getWireName();
// Check if this property has a particular namespace
$namespace = $param->getData('xmlNamespace');
// Filter the value
$value = $param->filter($value);
if ($param->getType() == 'array') {
$this->addXmlArray($xml, $param, $value, $namespace);
} elseif ($param->getType() == 'object') {
$this->addXmlObject($xml, $param, $value);
} elseif ($param->getData('xmlAttribute')) {
$xml->addAttribute($node, $value, $namespace);
} else {
$xml->addChild($node, $value, $namespace);
}
}
示例15: recursiveProcess
/**
* Recursively validate a parameter
*
* @param Parameter $param API parameter being validated
* @param mixed $value Value to validate and validate. The value may change during this validate.
* @param string $path Current validation path (used for error reporting)
* @param int $depth Current depth in the validation validate
*
* @return bool Returns true if valid, or false if invalid
*/
protected function recursiveProcess(Parameter $param, &$value, $path = '', $depth = 0)
{
// Update the value by adding default or static values
$value = $param->getValue($value);
$required = $param->getRequired();
// if the value is null and the parameter is not required or is static, then skip any further recursion
if (null === $value && !$required || $param->getStatic()) {
return true;
}
$type = $param->getType();
// Attempt to limit the number of times is_array is called by tracking if the value is an array
$valueIsArray = is_array($value);
// If a name is set then update the path so that validation messages are more helpful
if ($name = $param->getName()) {
$path .= "[{$name}]";
}
if ($type == 'object') {
// Objects are either associative arrays, ToArrayInterface, or some other object
if ($param->getInstanceOf()) {
$instance = $param->getInstanceOf();
if (!$value instanceof $instance) {
$this->errors[] = "{$path} must be an instance of {$instance}";
return false;
}
}
// Determine whether or not this "value" has properties and should be traversed
$traverse = $temporaryValue = false;
// Convert the value to an array
if (!$valueIsArray && $value instanceof ToArrayInterface) {
$value = $value->toArray();
}
if ($valueIsArray) {
// Ensure that the array is associative and not numerically indexed
if (isset($value[0])) {
$this->errors[] = "{$path} must be an array of properties. Got a numerically indexed array.";
return false;
}
$traverse = true;
} elseif ($value === null) {
// Attempt to let the contents be built up by default values if possible
$value = array();
$temporaryValue = $valueIsArray = $traverse = true;
}
if ($traverse) {
if ($properties = $param->getProperties()) {
// if properties were found, the validate each property of the value
foreach ($properties as $property) {
$name = $property->getName();
if (isset($value[$name])) {
$this->recursiveProcess($property, $value[$name], $path, $depth + 1);
} else {
$current = null;
$this->recursiveProcess($property, $current, $path, $depth + 1);
// Only set the value if it was populated with something
if (null !== $current) {
$value[$name] = $current;
}
}
}
}
$additional = $param->getAdditionalProperties();
if ($additional !== true) {
// If additional properties were found, then validate each against the additionalProperties attr.
$keys = array_keys($value);
// Determine the keys that were specified that were not listed in the properties of the schema
$diff = array_diff($keys, array_keys($properties));
if (!empty($diff)) {
// Determine which keys are not in the properties
if ($additional instanceof Parameter) {
foreach ($diff as $key) {
$this->recursiveProcess($additional, $value[$key], "{$path}[{$key}]", $depth);
}
} else {
// if additionalProperties is set to false and there are additionalProperties in the values, then fail
foreach ($diff as $prop) {
$this->errors[] = sprintf('%s[%s] is not an allowed property', $path, $prop);
}
}
}
}
// A temporary value will be used to traverse elements that have no corresponding input value.
// This allows nested required parameters with default values to bubble up into the input.
// Here we check if we used a temp value and nothing bubbled up, then we need to remote the value.
if ($temporaryValue && empty($value)) {
$value = null;
$valueIsArray = false;
}
}
} elseif ($type == 'array' && $valueIsArray && $param->getItems()) {
foreach ($value as $i => &$item) {
//.........这里部分代码省略.........