Storing complex configuration data

While porting the WP-Cumulus plugin to Prestashop I came across an interesting situation. In the original plugin the parameters for the Flash movie are stored in an array that is obtained from the Wordpress database using a get_option() call. In Prestashop the parameters can be retrieved in bulk using Configuration::getMultiple(), but in that case you have to specify the key names for all the parameters which is a pain.

What I decided to do was to use the serialize() and unserialize() php functions and store the options as a single configuration item in the database. That way we use:

// Get the options
$newoptions = unserialize(Configuration::get($this->name.'_options'));
// Save the options
Configuration::updateValue($this->name.'_options', serialize($newoptions));

The above works great in this situation, as the parameter names aren't language dependent, but this technique isn't suitable if your configuration data key needs to be defined in multiple languages.