lav45 / yii2-settings
这个扩展可以帮助您轻松存储和检索应用程序数据。
1.4.0
2023-05-15 15:08 UTC
Requires
- php: >=8.0
- yiisoft/yii2: >=2.0.13
Requires (Dev)
- phpunit/phpunit: 4.8 - 7.5
- roave/security-advisories: dev-master
README
这个扩展对于存储应用程序的任何设置都非常有用。
安装
通过 composer 安装此扩展是首选方式。
您可以在控制台设置
~$ composer require lav45/yii2-settings
或添加
"lav45/yii2-settings": "1.3.*"
到 composer.json
文件的 require
部分。
迁移
使用控制台命令应用
~$ yii migrate/up --migrationPath=vendor/lav45/yii2-settings/migrations
或将其添加到控制台配置文件(console/config/main.php)
return [ 'controllerMap' => [ 'migrate' => [ 'class' => yii\console\controllers\MigrateController::class, 'migrationPath' => [ '@app/migrations', '@vendor/lav45/yii2-settings/migrations', ], ], ], ];
组件设置
要使用设置组件,您需要在应用程序配置中配置组件数组
return [ 'components' => [ 'settings' => [ 'class' => 'lav45\settings\Settings', // You can add an arbitrary prefix to all keys // 'keyPrefix' => 'key_', // DbStorage use as default storage // 'storage' => [ // 'class' => 'lav45\settings\storage\DbStorage', // 'tableName' => '{{%settings}}', // 'db' => 'db', // ], 'as cache' => [ 'class' => 'lav45\settings\behaviors\CacheBehavior', // 'cache' => 'cache', // 'cacheDuration' => 3600, ], 'as access' => [ 'class' => 'lav45\settings\behaviors\QuickAccessBehavior', ], 'as context' => [ 'class' => 'lav45\settings\behaviors\ContextBehavior', ], ], /** * FileStorage this is the adapter allows you to store your settings in a simple file */ 'configFile' => [ 'class' => 'lav45\settings\Settings', // Be used for data serialization 'serializer' => ['serialize', 'unserialize'], 'storage' => [ 'class' => 'lav45\settings\storage\FileStorage', // it is desirable to determine the storage location // of your configuration files in a convenient place // 'path' => '@runtime/settings', // 'dirMode' => 0755, // 'fileSuffix' => '.bin', ], ], /** * PhpFileStorage this is an adapter to store data in php file * the serializer can be disabled to increase performance */ 'configPhpFile' => [ 'class' => 'lav45\settings\Settings', 'serializer' => false, 'storage' => [ 'class' => 'lav45\settings\storage\PhpFileStorage', // 'path' => '@runtime/settings', // 'fileSuffix' => '.php', ], ], ] ];
使用方法
可以默认
$settings = Yii::$app->settings; // Get not exist key $settings->get('key'); // => null // Get default value if key exist $settings->get('key', []); // => [] // Save and get data $settings->set('array', ['data']); // => true $settings->get('array'); // => [0 => 'data'] $settings->set('object', new User()); // => true $settings->get('object'); // => User $settings->set('float', 123.5); // => true $settings->get('float'); // => 123.5 $settings->set('integer', 0); // => true $settings->get('integer'); // => 0 $settings->set('bool', false); // => true $settings->get('bool'); // => false $settings->set('string', 'text'); // => true $settings->get('string'); // => text $settings->set('null', null); // => true $settings->get('null'); // => null // delete data by key $settings->delete('array'); // => true // Use as array $settings['array'] = ['data']; print_r($settings['array']); // => [0 => 'data'] isset($settings['array']) // => true unset($settings['array']);
缓存行为
这个扩展可以帮助通过缓存来加速数据加载。如果数据发生变化,缓存将自动更新。
要清除缓存,您可以使用此方法
Yii::$app->settings->cache->flush(); // => true
快速访问行为
这个扩展允许您从多维数组中快速获取必要的数据
// Getting data from multidimensional array $data = [ 'options' => [ 'css' => ['bootstrap.css'], 'js' => ['jquery', 'bootstrap.js'] ] ]; $settings = Yii::$app->settings; // Save data $settings->set('array', $data); // => true // Get data by key $settings->get('array.options.js'); // => ['jquery', 'bootstrap.js'] // Use as array print_r($settings['array.options.js']); // => ['jquery', 'bootstrap.js'] print_r($settings['array']['options']['js']); // => ['jquery', 'bootstrap.js'] // Get not exist key $settings->get('array.options.img'); // => null // Get default value if key exist $settings->get('array.options.imgs', []); // => [] // Replace value by path key $settings->replace('array', 'options.js', ['jquery']); $settings->replace('array', 'options.img', ['icon.jpg', 'icon.png']); $settings->get('array.options.js'); // => ['jquery'] $settings->get('array'); /** * [ * 'options' => [ * 'css' => ['bootstrap.css'], * 'js' => ['jquery'], // rewrite * 'img' => ['icon.jpg', 'icon.png'], // added * ] * ] */
上下文行为
这个扩展允许根据上下文检索数据。例如,根据所选语言。
$settings = Yii::$app->settings; $settings->context('en-US')->set('key', ['data']); // => true $settings->context('en-US')->get('key'); // => ['data'] $settings->context('ru-RU')->get('key'); // => null
实用示例:您可以在
许可证
yii2-settings 在 BSD 3-Clause 许可证下可用。详细信息可在 LICENSE.md
中找到。