Web applications often need to change behaviour according to user-configurable settings.
Similar to Symfony parameters, settings in Perform are values identified with a unique key. Their values can be set dynamically and per-user.
The SettingsManagerInterface
has methods to get and set values of settings:
getValue($key, $default = null)
- get a value, returning a default value if not found.getRequiredValue($key)
- get a value, throwing an exception if not found.setValue($key, $value)
- set a value.Values can be any serializable php type.
You can inject the perform_base.settings_manager
service manually into your services, or with autowiring by typehinting against Perform\BaseBundle\Settings\Manager\SettingsManagerInterface
.
<?php
use Perform\BaseBundle\Settings\Manager\SettingsManagerInterface;
class SomeService
{
protected $settings;
public function __construct(SettingsManagerInterface $settings)
{
$this->settings = $settings;
}
public function doStuff()
{
$perPage = $this->settings->getValue('items_per_page', 10);
$this->settings->setValue('items_per_page', 20);
$language = $this->settings->getRequiredValue('lang');
// whoops! \Perform\BaseBundle\Exception\SettingNotFoundException thrown
}
}