This package is abandoned and no longer maintained. No replacement package was suggested.

Elao Parameterizer

1.0.1 2014-07-02 14:43 UTC


Latest Stable Version Total Downloads Latest Unstable Version License

Build Status Scrutinizer Code Quality Code Coverage


This component provides a set of classes to handle some service parameters in a structured way, and a twig dat.GUI extension to set them with style.

A symfony ElaoParameterizerBundle also exists to simplify integration in your project.


Add ElaoParameterizer in your composer.json:

    "require": {
        "elao/elao/parameterizer": "1.0.*"

Now tell composer to download the library by running the command:

$ php composer.phar update elao/parameterizer

How to use it:

Classes are structured in a hierarchical manner, where a single Parameterizer contains n Patterns, each one containing n Parameters.


All classes takes a name as argument, and Parameter an initial value.

A factory is provided to simplify the parameterizer creation, and each class provides a convenient method to simplify its children creation.

$factory = new ParameterizerFactory(new Inflector());

// Create a "foo" named parameterizer
$parameterizer = $factory->create('foo');

	// Create a "foo" named pattern
		// Create a "bar" named parameter with a "baz" value
 		->create('bar', 'baz')
		// Create a "dinosaur" named parameter with a 42 value
 		->create('dinosaur', 42);


A pattern can takes an array of options. One of them is "label", which, if not provided, is automatically set as a human readable version of the pattern name, via an inflector.

$pattern->setOptions(array('foo' => 'bar'));

// bar
// 123 (default value, as "bar" options does not exists)
$pattern->getOption('bar', 123);
// Label

A parameter can also takes an array of options. Same rule applies for the label, and some extra options, such as "choices", "min", "max" and "set", are specific for dat.GUI integration.

$parameter->setOptions(array('min' => 1, 'max' => 2));

// 1
// null (default value, as "step" options does not exists)
// Label


At each level, you can get and merge values to communicate and synchronize with the real world.

// Gives a pattern indexed array of indexed parameter values array
// Merge
$parameterizer->mergeValues(array('foo' => array('bar' => 'baz')));

// Get indexed parameter values array
// Merge
$pattern->mergeValues(array('bar' => 'baz'));
// Get foo parameter value
// Set foo parameter value
$pattern->setValue('bar', 'baz');

// Get value
// Set value


An Parameterizable interface is provided to harmonize your code.

dat.GUI twig extension

This extension provides a elao_parameterizer_dat_gui_render_javascript method, which render the javascript part of dat.GUI integration. It accepting an array of options, one of them, "gui" being a string of the name of the dat.GUI instance to use.

<script src="https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.5/dat.gui.min.js"></script>
    var gui = new dat.GUI();
    {{ elao_parameterizer_dat_gui_render_javascript({'gui': 'gui'}) }}