PHP Classes

File: application/modules/extensions/aws/Aws/Api/ShapeMap.php

Recommend this page to a friend!
  Classes of Tran Tuan   Pretty PHP S3 Files Manager   application/modules/extensions/aws/Aws/Api/ShapeMap.php   Download  
File: application/modules/extensions/aws/Aws/Api/ShapeMap.php
Role: Application script
Content type: text/plain
Description: Application script
Class: Pretty PHP S3 Files Manager
Web based interface to manage files in Amazon S3
Author: By
Last change:
Date: 8 years ago
Size: 1,440 bytes
 

Contents

Class file image Download
<?php
namespace Aws\Api;

/**
 * Builds shape based on shape references.
 */
class ShapeMap
{
   
/** @var array */
   
private $definitions;

   
/** @var Shape[] */
   
private $simple;

   
/**
     * @param array $shapeModels Associative array of shape definitions.
     */
   
public function __construct(array $shapeModels)
    {
       
$this->definitions = $shapeModels;
    }

   
/**
     * Get an array of shape names.
     *
     * @return array
     */
   
public function getShapeNames()
    {
        return
array_keys($this->definitions);
    }

   
/**
     * Resolve a shape reference
     *
     * @param array $shapeRef Shape reference shape
     *
     * @return Shape
     * @throws \InvalidArgumentException
     */
   
public function resolve(array $shapeRef)
    {
       
$shape = $shapeRef['shape'];

        if (!isset(
$this->definitions[$shape])) {
            throw new \
InvalidArgumentException('Shape not found: ' . $shape);
        }

       
$isSimple = count($shapeRef) == 1;
        if (
$isSimple && isset($this->simple[$shape])) {
            return
$this->simple[$shape];
        }

       
$definition = $shapeRef + $this->definitions[$shape];
       
$definition['name'] = $definition['shape'];
        unset(
$definition['shape']);

       
$result = Shape::create($definition, $this);

        if (
$isSimple) {
           
$this->simple[$shape] = $result;
        }

        return
$result;
    }
}