mirror of
https://github.com/SociallyDev/Spaces-API.git
synced 2025-07-05 20:41:31 -07:00
67 lines
1.5 KiB
PHP
67 lines
1.5 KiB
PHP
<?php
|
|
namespace Aws\Api;
|
|
|
|
/**
|
|
* Base class that is used by most API shapes
|
|
*/
|
|
abstract class AbstractModel implements \ArrayAccess
|
|
{
|
|
/** @var array */
|
|
protected $definition;
|
|
|
|
/** @var ShapeMap */
|
|
protected $shapeMap;
|
|
|
|
/**
|
|
* @param array $definition Service description
|
|
* @param ShapeMap $shapeMap Shapemap used for creating shapes
|
|
*/
|
|
public function __construct(array $definition, ShapeMap $shapeMap)
|
|
{
|
|
$this->definition = $definition;
|
|
$this->shapeMap = $shapeMap;
|
|
}
|
|
|
|
public function toArray()
|
|
{
|
|
return $this->definition;
|
|
}
|
|
|
|
public function offsetGet($offset)
|
|
{
|
|
return isset($this->definition[$offset])
|
|
? $this->definition[$offset] : null;
|
|
}
|
|
|
|
public function offsetSet($offset, $value)
|
|
{
|
|
$this->definition[$offset] = $value;
|
|
}
|
|
|
|
public function offsetExists($offset)
|
|
{
|
|
return isset($this->definition[$offset]);
|
|
}
|
|
|
|
public function offsetUnset($offset)
|
|
{
|
|
unset($this->definition[$offset]);
|
|
}
|
|
|
|
protected function shapeAt($key)
|
|
{
|
|
if (!isset($this->definition[$key])) {
|
|
throw new \InvalidArgumentException('Expected shape definition at '
|
|
. $key);
|
|
}
|
|
|
|
return $this->shapeFor($this->definition[$key]);
|
|
}
|
|
|
|
protected function shapeFor(array $definition)
|
|
{
|
|
return isset($definition['shape'])
|
|
? $this->shapeMap->resolve($definition)
|
|
: Shape::create($definition, $this->shapeMap);
|
|
}
|
|
}
|