Overview

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CloudMonitoring
      • 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
      • Enum
      • Resource
    • ObjectStore
      • Constants
      • Exception
      • Resource
      • Upload
    • Orchestration
    • Queues
      • Exception
      • Resource
    • Volume
      • Resource
  • PHP

Classes

  • ArrayAccess
  • Base
  • Lang
  • Metadata
  • Overview
  • Namespace
  • Class
  • Tree
  • Download
  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: 
PHP OpenCloud API API documentation generated by ApiGen 2.8.0