diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Api/StructureShape.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/Api/StructureShape.php | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Api/StructureShape.php b/vendor/aws/aws-sdk-php/src/Api/StructureShape.php new file mode 100644 index 0000000..a287935 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/Api/StructureShape.php @@ -0,0 +1,79 @@ +<?php +namespace Aws\Api; + +/** + * Represents a structure shape and resolve member shape references. + */ +class StructureShape extends Shape +{ + /** + * @var Shape[] + */ + private $members; + + public function __construct(array $definition, ShapeMap $shapeMap) + { + $definition['type'] = 'structure'; + + if (!isset($definition['members'])) { + $definition['members'] = []; + } + + parent::__construct($definition, $shapeMap); + } + + /** + * Gets a list of all members + * + * @return Shape[] + */ + public function getMembers() + { + if (empty($this->members)) { + $this->generateMembersHash(); + } + + return $this->members; + } + + /** + * Check if a specific member exists by name. + * + * @param string $name Name of the member to check + * + * @return bool + */ + public function hasMember($name) + { + return isset($this->definition['members'][$name]); + } + + /** + * Retrieve a member by name. + * + * @param string $name Name of the member to retrieve + * + * @return Shape + * @throws \InvalidArgumentException if the member is not found. + */ + public function getMember($name) + { + $members = $this->getMembers(); + + if (!isset($members[$name])) { + throw new \InvalidArgumentException('Unknown member ' . $name); + } + + return $members[$name]; + } + + + private function generateMembersHash() + { + $this->members = []; + + foreach ($this->definition['members'] as $name => $definition) { + $this->members[$name] = $this->shapeFor($definition); + } + } +} |