lav45/yii2-settings

这个扩展可以帮助您轻松存储和检索应用程序数据。

安装量: 4,157

依赖项: 2

建议者: 0

安全: 0

星级: 14

关注者: 7

分支: 4

开放问题: 0

类型:yii2-extension

1.4.0 2023-05-15 15:08 UTC

This package is auto-updated.

Last update: 2024-08-27 20:53:01 UTC


README

Latest Stable Version License Total Downloads Build Status Code Coverage Scrutinizer Code Quality Code Climate

这个扩展对于存储应用程序的任何设置都非常有用。

安装

通过 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 中找到。