abstract class AbstractOptions in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/zendframework/zend-stdlib/src/AbstractOptions.php \Zend\Stdlib\AbstractOptions
Hierarchy
- class \Zend\Stdlib\AbstractOptions implements ParameterObjectInterface
Expanded class hierarchy of AbstractOptions
File
- vendor/
zendframework/ zend-stdlib/ src/ AbstractOptions.php, line 14
Namespace
Zend\StdlibView source
abstract class AbstractOptions implements ParameterObjectInterface {
/**
* We use the __ prefix to avoid collisions with properties in
* user-implementations.
*
* @var bool
*/
protected $__strictMode__ = true;
/**
* Constructor
*
* @param array|Traversable|null $options
*/
public function __construct($options = null) {
if (null !== $options) {
$this
->setFromArray($options);
}
}
/**
* Set one or more configuration properties
*
* @param array|Traversable|AbstractOptions $options
* @throws Exception\InvalidArgumentException
* @return AbstractOptions Provides fluent interface
*/
public function setFromArray($options) {
if ($options instanceof self) {
$options = $options
->toArray();
}
if (!is_array($options) && !$options instanceof Traversable) {
throw new Exception\InvalidArgumentException(sprintf('Parameter provided to %s must be an %s, %s or %s', __METHOD__, 'array', 'Traversable', 'Zend\\Stdlib\\AbstractOptions'));
}
foreach ($options as $key => $value) {
$this
->__set($key, $value);
}
return $this;
}
/**
* Cast to array
*
* @return array
*/
public function toArray() {
$array = [];
$transform = function ($letters) {
$letter = array_shift($letters);
return '_' . strtolower($letter);
};
foreach ($this as $key => $value) {
if ($key === '__strictMode__') {
continue;
}
$normalizedKey = preg_replace_callback('/([A-Z])/', $transform, $key);
$array[$normalizedKey] = $value;
}
return $array;
}
/**
* Set a configuration property
*
* @see ParameterObject::__set()
* @param string $key
* @param mixed $value
* @throws Exception\BadMethodCallException
* @return void
*/
public function __set($key, $value) {
$setter = 'set' . str_replace('_', '', $key);
if (is_callable([
$this,
$setter,
])) {
$this
->{$setter}($value);
return;
}
if ($this->__strictMode__) {
throw new Exception\BadMethodCallException(sprintf('The option "%s" does not have a callable "%s" ("%s") setter method which must be defined', $key, 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))), $setter));
}
}
/**
* Get a configuration property
*
* @see ParameterObject::__get()
* @param string $key
* @throws Exception\BadMethodCallException
* @return mixed
*/
public function __get($key) {
$getter = 'get' . str_replace('_', '', $key);
if (is_callable([
$this,
$getter,
])) {
return $this
->{$getter}();
}
throw new Exception\BadMethodCallException(sprintf('The option "%s" does not have a callable "%s" getter method which must be defined', $key, 'get' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key)))));
}
/**
* Test if a configuration property is null
* @see ParameterObject::__isset()
* @param string $key
* @return bool
*/
public function __isset($key) {
$getter = 'get' . str_replace('_', '', $key);
return method_exists($this, $getter) && null !== $this
->__get($key);
}
/**
* Set a configuration property to NULL
*
* @see ParameterObject::__unset()
* @param string $key
* @throws Exception\InvalidArgumentException
* @return void
*/
public function __unset($key) {
try {
$this
->__set($key, null);
} catch (Exception\BadMethodCallException $e) {
throw new Exception\InvalidArgumentException('The class property $' . $key . ' cannot be unset as' . ' NULL is an invalid value for it', 0, $e);
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AbstractOptions:: |
protected | property | We use the __ prefix to avoid collisions with properties in user-implementations. | |
AbstractOptions:: |
public | function | Set one or more configuration properties | |
AbstractOptions:: |
public | function | Cast to array | |
AbstractOptions:: |
public | function | Constructor | |
AbstractOptions:: |
public | function |
Get a configuration property Overrides ParameterObjectInterface:: |
|
AbstractOptions:: |
public | function |
Test if a configuration property is null Overrides ParameterObjectInterface:: |
|
AbstractOptions:: |
public | function |
Set a configuration property Overrides ParameterObjectInterface:: |
|
AbstractOptions:: |
public | function |
Set a configuration property to NULL Overrides ParameterObjectInterface:: |