<?php 
namespace Aws\Api; 
 
/** 
 * Represents a map shape. 
 */ 
class MapShape extends Shape 
{ 
    /** @var Shape */ 
    private $value; 
 
    /** @var Shape */ 
    private $key; 
 
    public function __construct(array $definition, ShapeMap $shapeMap) 
    { 
        $definition['type'] = 'map'; 
        parent::__construct($definition, $shapeMap); 
    } 
 
    /** 
     * @return Shape 
     * @throws \RuntimeException if no value is specified 
     */ 
    public function getValue() 
    { 
        if (!$this->value) { 
            if (!isset($this->definition['value'])) { 
                throw new \RuntimeException('No value specified'); 
            } 
 
            $this->value = Shape::create( 
                $this->definition['value'], 
                $this->shapeMap 
            ); 
        } 
 
        return $this->value; 
    } 
 
    /** 
     * @return Shape 
     */ 
    public function getKey() 
    { 
        if (!$this->key) { 
            $this->key = isset($this->definition['key']) 
                ? Shape::create($this->definition['key'], $this->shapeMap) 
                : new Shape(['type' => 'string'], $this->shapeMap); 
        } 
 
        return $this->key; 
    } 
} 
 
 |