PHP Classes

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

Recommend this page to a friend!
  Classes of Tran Tuan   Pretty PHP S3 Files Manager   application/modules/extensions/aws/Aws/Api/AbstractModel.php   Download  
File: application/modules/extensions/aws/Aws/Api/AbstractModel.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,561 bytes
 

Contents

Class file image Download
<?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);
    }
}