1. Go to this page and download the library: Download rasuvaeff/yii3-settings-db library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rasuvaeff / yii3-settings-db example snippets
use Rasuvaeff\Yii3Settings\SettingDefinition;
use Rasuvaeff\Yii3Settings\SettingType;
use Rasuvaeff\Yii3Settings\Settings;
use Rasuvaeff\Yii3SettingsDb\DbSettingsProvider;
$definitions = [
'mail.from' => new SettingDefinition(key: 'mail.from', type: SettingType::String, default: '[email protected]'),
'orders.max_items' => new SettingDefinition(key: 'orders.max_items', type: SettingType::Int, default: 100),
];
$provider = new DbSettingsProvider(
db: $connection,
definitions: $definitions,
table: 'settings',
);
$provider->set('mail.from', '[email protected]');
$provider->set('orders.max_items', '250');
$settings = new Settings(provider: $provider, definitions: $definitions);
$settings->string('mail.from');
$settings->int('orders.max_items');
// config/common/params.php
'rasuvaeff/yii3-settings-db' => [
'table' => 'my_settings',
'table_prefix' => '', // prepended to `table`; e.g. 'rsv_' → rsv_my_settings
],
use Rasuvaeff\Yii3Settings\CachedSettingsProvider;
$cached = new CachedSettingsProvider(
inner: $provider,
cache: $psr16Cache,
definitions: $definitions,
ttl: 60,
);
$cached->get('mail.from');
$cached->clear('mail.from');
use Rasuvaeff\Yii3Settings\SettingDefinition;
use Rasuvaeff\Yii3Settings\SettingType;
use Rasuvaeff\Yii3SettingsDb\Crypto\KeyRing;
use Rasuvaeff\Yii3SettingsDb\Crypto\SodiumCipher;
$keyRing = new KeyRing(
keys: ['key-2025' => sodium_crypto_aead_xchacha20poly1305_ietf_keygen()],
activeKeyId: 'key-2025',
);
$cipher = new SodiumCipher(keyRing: $keyRing);
$definitions = [
'billing.stripe_key' => new SettingDefinition(key: 'billing.stripe_key', type: SettingType::String, secret: true),
'mail.from' => new SettingDefinition(key: 'mail.from', type: SettingType::String, default: '[email protected]'),
];
$provider = new DbSettingsProvider(db: $db, definitions: $definitions, cipher: $cipher);
$provider->set('billing.stripe_key', 'sk_live_xxx');
// Stored as enc:vkey-2025:... in DB — plaintext never at rest.
$provider->get('billing.stripe_key'); // 'sk_live_xxx' (transparent decrypt)
$state = $provider->describe(key: 'billing.stripe_key');
$state->key; // 'billing.stripe_key'
$state->hasStoredOverride; // true
$state->source; // 'db', 'config', or 'default'
$state->isSecret; // true — value is masked (null)
$state->isWritable; // true
$count = $provider->reencryptSecrets();
// Decrypts all stored secret values with their current key,
// re-encrypts with the active key. Plaintext values (without enc: prefix)
// are encrypted in-place. Returns count of re-encrypted keys.
// Resolve effective values for all keys starting with "mail."
$values = $provider->getByPrefix('mail.');
// ['mail.from' => '[email protected]', 'mail.enabled' => true]
// Set multiple values in a single transaction
$provider->setMany([
'mail.from' => '[email protected]',
'orders.max_items' => '250',
'mail.enabled' => false,
]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.