FleetCart/Modules/Setting/Repository.php
2023-12-03 14:07:47 +00:00

147 lines
2.5 KiB
PHP

<?php
namespace Modules\Setting;
use ArrayAccess;
use Illuminate\Support\Collection;
use Modules\Setting\Entities\Setting;
class Repository implements ArrayAccess
{
/**
* Collection of all settings.
*
* @var Collection
*/
private $settings;
/**
* Create a new repository instance.
*
* @param Collection $settings
*/
public function __construct($settings)
{
$this->settings = $settings;
}
/**
* Get all settings.
*
* @return array
*/
public function all()
{
return $this->settings->all();
}
/**
* Determine if a setting is exists.
*
* @param string $key
*
* @return bool
*/
public function offsetExists($key)
{
return $this->settings->has($key);
}
/**
* Unset a setting by the given key.
*
* @param string $key
*
* @return Collection
*/
public function offsetUnset($key)
{
return $this->settings->forget($key);
}
/**
* Get setting for the given key.
*
* @param string $key
*
* @return mixed
*/
public function __get($key)
{
return $this->offsetGet($key);
}
/**
* Set a key / value setting pair.
*
* @param string $key
* @param mixed $value
*
* @return void
*/
public function __set($key, $value)
{
$this->offsetSet($key, $value);
}
/**
* Get setting for the given key.
*
* @param string $key
*
* @return mixed
*/
public function offsetGet($key)
{
return $this->get($key);
}
/**
* Get setting for the given key.
*
* @param string $key
* @param mixed $default
*
* @return mixed
*/
public function get($key, $default = null)
{
return $this->settings->get($key) ?: $default;
}
/**
* Set a key / value setting pair.
*
* @param string $key
* @param mixed $value
*
* @return void
*/
public function offsetSet($key, $value)
{
$this->set([$key => $value]);
}
/**
* Set the given settings.
*
* @param array $settings
*
* @return void
*/
public function set($settings = [])
{
Setting::setMany($settings);
}
}