<?php /* * This file is part of the overtrue/easy-sms. * * (c) overtrue <i@overtrue.me> * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace Overtrue\EasySms\Support; use ArrayAccess; /** * Class Config. */ class Config implements ArrayAccess { /** * @var array */ protected $config; /** * Config constructor. * * @param array $config */ public function __construct(array $config = []) { $this->config = $config; } /** * Get an item from an array using "dot" notation. * * @param string $key * @param mixed $default * * @return mixed */ public function get($key, $default = null) { $config = $this->config; if (isset($config[$key])) { return $config[$key]; } if (false === strpos($key, '.')) { return $default; } foreach (explode('.', $key) as $segment) { if (!is_array($config) || !array_key_exists($segment, $config)) { return $default; } $config = $config[$segment]; } return $config; } /** * Whether a offset exists. * * @see http://php.net/manual/en/arrayaccess.offsetexists.php * * @param mixed $offset <p> * An offset to check for. * </p> * * @return bool true on success or false on failure. * </p> * <p> * The return value will be casted to boolean if non-boolean was returned * * @since 5.0.0 */ #[\ReturnTypeWillChange] public function offsetExists($offset) { return array_key_exists($offset, $this->config); } /** * Offset to retrieve. * * @see http://php.net/manual/en/arrayaccess.offsetget.php * * @param mixed $offset <p> * The offset to retrieve. * </p> * * @return mixed Can return all value types * * @since 5.0.0 */ #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->get($offset); } /** * Offset to set. * * @see http://php.net/manual/en/arrayaccess.offsetset.php * * @param mixed $offset <p> * The offset to assign the value to. * </p> * @param mixed $value <p> * The value to set. * </p> * * @since 5.0.0 */ #[\ReturnTypeWillChange] public function offsetSet($offset, $value) { if (isset($this->config[$offset])) { $this->config[$offset] = $value; } } /** * Offset to unset. * * @see http://php.net/manual/en/arrayaccess.offsetunset.php * * @param mixed $offset <p> * The offset to unset. * </p> * * @since 5.0.0 */ #[\ReturnTypeWillChange] public function offsetUnset($offset) { if (isset($this->config[$offset])) { unset($this->config[$offset]); } } }