bztang-admin/app/common/modules/shop/PluginsConfig.php

94 lines
1.8 KiB
PHP

<?php
namespace app\common\modules\shop;
class PluginsConfig
{
/**
* @var self
*/
static $current;
protected $items;
/**
* constructor.
*/
public function __construct()
{
self::$current = $this;
}
static public function current()
{
if (!isset(self::$current)) {
return new static();
}
return self::$current;
}
protected function _getItems()
{
$result = [];
$plugins = app('plugins')->getEnabledPlugins('*');
foreach ($plugins as $plugin) {
foreach ($plugin->app()->getPluginConfigItems() as $key => $item) {
array_set($result, $key, $item);
}
}
return $result;
}
protected function getItems()
{
if (!isset($this->items)) {
$this->items = $this->_getItems();
}
return $this->items;
}
public function getItem($key)
{
return array_get($this->getItems(), $key);
}
public function clear()
{
$this->items = null;
}
public function get($key = null)
{
if (empty($key)) {
return $this->getItems();
}
return $this->getItem($key);
}
public function set($key, $value = null)
{
$items = $this->getItems();
if (is_array($key)) {
foreach ($key as $k => $v) {
array_set($items, $k, $v);
}
} else {
array_set($items, $key, $value);
}
$this->items = $items;
}
public function push($key, $value)
{
$all = $this->getItems();
$array = $this->getItem($key) ?: [];
$array[] = $value;
array_set($all, $key, $array);
$this->items = $all;
}
}