[ Index ] |
PHP Cross Reference of phpBB-3.2.11-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Zend Framework (http://framework.zend.com/) 4 * 5 * @link http://github.com/zendframework/zf2 for the canonical source repository 6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) 7 * @license http://framework.zend.com/license/new-bsd New BSD License 8 */ 9 10 namespace Zend\Stdlib; 11 12 use Traversable; 13 14 abstract class AbstractOptions implements ParameterObjectInterface 15 { 16 /** 17 * We use the __ prefix to avoid collisions with properties in 18 * user-implementations. 19 * 20 * @var bool 21 */ 22 protected $__strictMode__ = true; 23 24 /** 25 * Constructor 26 * 27 * @param array|Traversable|null $options 28 */ 29 public function __construct($options = null) 30 { 31 if (null !== $options) { 32 $this->setFromArray($options); 33 } 34 } 35 36 /** 37 * Set one or more configuration properties 38 * 39 * @param array|Traversable|AbstractOptions $options 40 * @throws Exception\InvalidArgumentException 41 * @return AbstractOptions Provides fluent interface 42 */ 43 public function setFromArray($options) 44 { 45 if ($options instanceof self) { 46 $options = $options->toArray(); 47 } 48 49 if (!is_array($options) && !$options instanceof Traversable) { 50 throw new Exception\InvalidArgumentException( 51 sprintf( 52 'Parameter provided to %s must be an %s, %s or %s', 53 __METHOD__, 54 'array', 55 'Traversable', 56 'Zend\Stdlib\AbstractOptions' 57 ) 58 ); 59 } 60 61 foreach ($options as $key => $value) { 62 $this->__set($key, $value); 63 } 64 65 return $this; 66 } 67 68 /** 69 * Cast to array 70 * 71 * @return array 72 */ 73 public function toArray() 74 { 75 $array = array(); 76 $transform = function ($letters) { 77 $letter = array_shift($letters); 78 return '_' . strtolower($letter); 79 }; 80 foreach ($this as $key => $value) { 81 if ($key === '__strictMode__') { 82 continue; 83 } 84 $normalizedKey = preg_replace_callback('/([A-Z])/', $transform, $key); 85 $array[$normalizedKey] = $value; 86 } 87 return $array; 88 } 89 90 /** 91 * Set a configuration property 92 * 93 * @see ParameterObject::__set() 94 * @param string $key 95 * @param mixed $value 96 * @throws Exception\BadMethodCallException 97 * @return void 98 */ 99 public function __set($key, $value) 100 { 101 $setter = 'set' . str_replace('_', '', $key); 102 103 if (is_callable(array($this, $setter))) { 104 $this->{$setter}($value); 105 106 return; 107 } 108 109 if ($this->__strictMode__) { 110 throw new Exception\BadMethodCallException(sprintf( 111 'The option "%s" does not have a callable "%s" ("%s") setter method which must be defined', 112 $key, 113 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))), 114 $setter 115 )); 116 } 117 } 118 119 /** 120 * Get a configuration property 121 * 122 * @see ParameterObject::__get() 123 * @param string $key 124 * @throws Exception\BadMethodCallException 125 * @return mixed 126 */ 127 public function __get($key) 128 { 129 $getter = 'get' . str_replace('_', '', $key); 130 131 if (is_callable(array($this, $getter))) { 132 return $this->{$getter}(); 133 } 134 135 throw new Exception\BadMethodCallException(sprintf( 136 'The option "%s" does not have a callable "%s" getter method which must be defined', 137 $key, 138 'get' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))) 139 )); 140 } 141 142 /** 143 * Test if a configuration property is null 144 * @see ParameterObject::__isset() 145 * @param string $key 146 * @return bool 147 */ 148 public function __isset($key) 149 { 150 $getter = 'get' . str_replace('_', '', $key); 151 152 return method_exists($this, $getter) && null !== $this->__get($key); 153 } 154 155 /** 156 * Set a configuration property to NULL 157 * 158 * @see ParameterObject::__unset() 159 * @param string $key 160 * @throws Exception\InvalidArgumentException 161 * @return void 162 */ 163 public function __unset($key) 164 { 165 try { 166 $this->__set($key, null); 167 } catch (Exception\BadMethodCallException $e) { 168 throw new Exception\InvalidArgumentException( 169 'The class property $' . $key . ' cannot be unset as' 170 . ' NULL is an invalid value for it', 171 0, 172 $e 173 ); 174 } 175 } 176 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Nov 11 20:33:01 2020 | Cross-referenced by PHPXref 0.7.1 |