ancor/yii2-related-kv-storage
SQL数据库中的相关键值存储。
dev-master
2019-09-23 12:34 UTC
Requires
- php: ^7.0
- yiisoft/yii2: ^2.0
This package is not auto-updated.
Last update: 2024-09-15 22:22:09 UTC
README
描述
基于MySQL表的存储。可用于从管理面板编辑设置。
此扩展有两个类
- Config - 默认设置的存储
- RelatedConfig - 单个设置的存储
请通过以下方式告诉我您希望添加的其他内容:
安装
安装此扩展的首选方式是通过composer。
运行以下命令:
$ php composer.phar require ancor/yii2-related-kv-storage
或者将以下内容添加到您的composer.json
文件的require
部分:
"ancor/yii2-related-kv-storage": "dev-master"
配置类
简单的类似于数组的键值存储。
功能
- 此类是RelatedConfig的基础
- 对选项的数组访问(也是可数的和可迭代的)
- 此类可以用作$ app容器中的yii组件
- 此类旨在继承和扩展
- 当实例创建时从数据库自动加载**自动加载配置**
基于MySQL表的存储。可用于从管理面板编辑设置。
配置
'components' => [ 'config' => [ 'class' => 'ancor\relatedKvStorage\Config', // default settings // 'tableName' => '{{config}}', // 'keyField' => 'key', // 'valueField' => 'value', ] ]
用法
简单用法
Yii::$app->config['main-page.show-banner'] = true; if (Yii::$app->config['main-page.show-banner']) { ... }
可迭代的
$config = Yii::$app->config; foreach ($config as $key => $value) { echo $key . ' -> ' . $value . "\n"; }
当实例创建时自动加载配置。但配置将**不会自动保存**。
Yii::$app->config->attributes = [ 'default.option-one' => true, 'default.option-two' => false, ]; // Can be get, but didn't store echo Yii::$app->config['default.option-one']; // true // For convenience, let's make some variable $config = Yii::$app->config; // Save to database $config->save(); // let's change any value $config['default.option-one'] = false; echo $config['default.option-one']; // false // And now, imagine that we need to reset changed values to default. // Reload from database. Please note, ->save() was not fired. $config->reload(); echo $config['default.option-one']; // true // If we need to array type echo gettype($config->attributes); // array
RelatedConfig类
类似于Config的简单键值存储,但与另一个实体相关
功能
- 此类继承自[[\ancor\relatedKvStorage\Config]]的所有功能
- 非常适合存储用户偏好,并且这些偏好需要具有默认值
值通过三个步骤提取
- 尝试从当前(RelatedConfig)模型中获取当前值。
- 尝试从通用配置组件(Yii::$app->config)中获取默认值。
- 如果没有收到值,将返回null。
请使用Yii::createObject()创建实例以配置实例。
配置
**最好通过模型使用**。例如对于User类
use ancor\relatedKvStorage\RelatedConfig class User extends ... { ... /** * Get user configuration * @return RelatedConfig */ public function getConfig() { $config = Yii::createObject([ 'class' => RelatedConfig::className(), 'relationId' => $this->id, // Default settings // 'tableName' => '{{user_config}}', // 'relationIdField' => 'user_id', // 'configComponentName' => 'config', // 'useCommonConfig' => true, ]); } }
用法
// set default global settings (use Config class) Yii::$app->config->attributes = [ 'user.dialogs.message-limit' => 100, 'user.friends.limit => 20, ]; $user = new User(); $user->config = [ // this option has not default value in global settings 'user.dialogs.allow-modify' => true, // override default value from global settings 'user.friends.limit' => 50, ]; // Must have! ( getConfig() reload don't cache `config` object and reload every time. So we didn't do it ) $user->config->save(); // use current value echo $user->config['user.dialogs.allow-modify']; // true // override default, use current value echo $user->config['user.friends.limit']; // 50 // have not current, use default value echo $user->config['user.dialogs.message-limit']; // 100