Overview
  • Namespace
  • Class

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CloudMonitoring
      • Collection
      • Exception
      • Resource
    • Common
      • Collection
      • Constants
      • Exceptions
      • Http
        • Message
      • Log
      • Resource
      • Service
    • Compute
      • Constants
      • Exception
      • Resource
    • Database
      • Resource
    • DNS
      • Collection
      • Resource
    • Identity
      • Constants
      • Resource
    • Image
      • Enum
      • Resource
        • JsonPatch
        • Schema
    • LoadBalancer
      • Collection
      • Enum
      • Resource
    • Networking
      • Resource
    • ObjectStore
      • Constants
      • Exception
      • Resource
      • Upload
    • Orchestration
      • Resource
    • Queues
      • Collection
      • Exception
      • Resource
    • Volume
      • Resource

Classes

  • OpenCloud\Volume\Resource\Snapshot
  • OpenCloud\Volume\Resource\Volume
  • OpenCloud\Volume\Resource\VolumeType
  1 <?php
  2 /**
  3  * Copyright 2012-2014 Rackspace US, Inc.
  4  *
  5  * Licensed under the Apache License, Version 2.0 (the "License");
  6  * you may not use this file except in compliance with the License.
  7  * You may obtain a copy of the License at
  8  *
  9  * http://www.apache.org/licenses/LICENSE-2.0
 10  *
 11  * Unless required by applicable law or agreed to in writing, software
 12  * distributed under the License is distributed on an "AS IS" BASIS,
 13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14  * See the License for the specific language governing permissions and
 15  * limitations under the License.
 16  */
 17 
 18 namespace OpenCloud\Common;
 19 
 20 /**
 21  * The Metadata class represents either Server or Image metadata
 22  */
 23 class Metadata extends Base implements \Countable
 24 {
 25     /**
 26      * @var array Internal data store.
 27      */
 28     protected $metadata = array();
 29 
 30     /**
 31      * This setter overrides the base one, since the metadata key can be
 32      * anything
 33      *
 34      * @param string $property
 35      * @param string $value
 36      * @return void
 37      */
 38     public function __set($property, $value)
 39     {
 40         return $this->setProperty($property, $value);
 41     }
 42 
 43     public function __get($key)
 44     {
 45         return $this->getProperty($key);
 46     }
 47 
 48     public function propertyExists($property, $allowRetry = true)
 49     {
 50         return isset($this->metadata[strtolower($property)])
 51         || parent::propertyExists($property, $allowRetry);
 52     }
 53 
 54     public function getProperty($property)
 55     {
 56         return $this->propertyExists($property) ? $this->metadata[strtolower($property)] : null;
 57     }
 58 
 59     public function setProperty($property, $value)
 60     {
 61         $this->metadata[strtolower($property)] = $value;
 62     }
 63 
 64     public function __isset($property)
 65     {
 66         return $this->propertyExists($property);
 67     }
 68 
 69     /**
 70      * Returns the list of keys defined
 71      *
 72      * @return array
 73      */
 74     public function keylist()
 75     {
 76         return $this->metadata;
 77     }
 78 
 79     /**
 80      * Sets metadata values from an array, with optional prefix
 81      *
 82      * If $prefix is provided, then only array keys that match the prefix
 83      * are set as metadata values, and $prefix is stripped from the key name.
 84      *
 85      * @param array  $values an array of key/value pairs to set
 86      * @param string $prefix if provided, a prefix that is used to identify
 87      *                       metadata values. For example, you can set values from headers
 88      *                       for a Container by using $prefix='X-Container-Meta-'.
 89      * @return void
 90      */
 91     public function setArray($values, $prefix = null)
 92     {
 93         if (empty($values)) {
 94             return false;
 95         }
 96 
 97         foreach ($values as $key => $value) {
 98             if ($prefix && strpos($key, $prefix) === 0) {
 99                 $key = substr($key, strlen($prefix));
100             }
101             $this->setProperty($key, $value);
102         }
103     }
104 
105     public function toArray()
106     {
107         return $this->metadata;
108     }
109 
110     public function count()
111     {
112         return count($this->metadata);
113     }
114 }
115 
API documentation generated by ApiGen