elao / parameterizer
Elao Parameterizer
Requires
- php: >=5.3.3
Requires (Dev)
- twig/twig: 1.*
This package is not auto-updated.
Last update: 2022-02-01 12:36:37 UTC
README
描述
此组件提供了一组类来以结构化的方式处理一些服务参数,并提供了twig dat.GUI 扩展,以便以风格化方式设置它们。
还存在着一个symfony ElaoParameterizerBundle,用于简化项目中的集成。
安装
在您的composer.json中添加ElaoParameterizer
{
"require": {
"elao/elao/parameterizer": "1.0.*"
}
}
现在运行以下命令,让composer下载库
$ php composer.phar update elao/parameterizer
如何使用
类以分层的方式组织,其中单个 Parameterizer 包含 n 个 Patterns,每个 Patterns 包含 n 个 Parameters。
Parameterizer
Pattern
Parameter
Parameter
Parameter
Pattern
Parameter
Parameter
所有类都接受一个名称作为参数,Parameter 接受一个初始值。
提供了一个工厂来简化参数化器的创建,并且每个类都提供了一个方便的方法来简化其子类的创建。
$factory = new ParameterizerFactory(new Inflector());
// Create a "foo" named parameterizer
$parameterizer = $factory->create('foo');
$parameterizer
// Create a "foo" named pattern
->create('foo')
// Create a "bar" named parameter with a "baz" value
->create('bar', 'baz')
// Create a "dinosaur" named parameter with a 42 value
->create('dinosaur', 42);
选项
模式可以接受一个选项数组。其中之一是 "label",如果没有提供,则会自动通过屈折法将模式名称设置为可读版本。
$pattern->setOptions(array('foo' => 'bar'));
// bar
$pattern->getOption('foo');
// 123 (default value, as "bar" options does not exists)
$pattern->getOption('bar', 123);
// Label
$pattern->getOption('label');
参数也可以接受一个选项数组。对于标签,适用相同的规则,还有一些额外的选项,如 "choices"、"min"、"max" 和 "set",这些是针对dat.GUI集成特定的。
$parameter->setOptions(array('min' => 1, 'max' => 2));
// 1
$parameter->getOption('min');
// null (default value, as "step" options does not exists)
$parameter->getOption('step');
// Label
$parameter->getOption('label');
值
在每一级,您可以获取和合并值以与真实世界进行通信和同步。
// Gives a pattern indexed array of indexed parameter values array
$parameterizer->getValues();
// Merge
$parameterizer->mergeValues(array('foo' => array('bar' => 'baz')));
// Get indexed parameter values array
$pattern->getValues();
// Merge
$pattern->mergeValues(array('bar' => 'baz'));
// Get foo parameter value
$pattern->getValue('bar');
// Set foo parameter value
$pattern->setValue('bar', 'baz');
// Get value
$parameter->getValue();
// Set value
$parameter->setValue();
接口
提供了一个 Parameterizable 接口以协调您的代码。
dat.GUI twig 扩展
此扩展提供了一个 elao_parameterizer_dat_gui_render_javascript 方法,用于渲染dat.GUI集成的javascript部分。它接受一个选项数组,其中一个选项是 "gui",表示要使用的dat.GUI实例的名称。
<script src="https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.5/dat.gui.min.js"></script>
<script>
var gui = new dat.GUI();
{{ elao_parameterizer_dat_gui_render_javascript({'gui': 'gui'}) }}
</script>