summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/Api/StructureShape.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Api/StructureShape.php')
-rw-r--r--vendor/aws/aws-sdk-php/src/Api/StructureShape.php79
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);
+ }
+ }
+}