elao/parameterizer

此包已被废弃且不再维护。未建议替代包。

Elao Parameterizer

1.0.1 2014-07-02 14:43 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:36:37 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

Build Status Scrutinizer Code Quality Code Coverage

描述

此组件提供了一组类来以结构化的方式处理一些服务参数,并提供了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>