danhanly / scientist-utility-matcher
Scientist 的实用匹配器
0.2.0
2016-02-07 20:17 UTC
Requires
- daylerees/scientist: ~1.0
Requires (Dev)
- phpunit/phpunit: ~5.2
This package is not auto-updated.
Last update: 2024-09-14 18:26:13 UTC
README
Scientist 实用匹配器
简单类型,用于与 Scientist 库 一起使用的实用匹配器
1. 安装
使用 Composer 需要Scientist Symfony的最新版本。
composer require danhanly/scientist-utility-matcher
2. 匹配器
该项目中包含了一些简单匹配器,用于您的实验。
2.1 ObjectPropertyMatcher
这允许您匹配由控制和试验过程返回的对象上的特定属性。
初始化匹配器时,您可以将其配置为通过字符串匹配单个属性,或通过数组匹配多个属性。
// initialise matcher $matcher = new \DanHanly\Scientist\UtilityMatchers\ObjectPropertyMatcher; // define property via string $matcher->setProperties('propertyName'); // or via array $matcher->setProperties(['propertyName', 'anotherPropertyName']);
您还可以通过匹配器构造函数直接设置属性。
// define property via string $matcher = new \DanHanly\Scientist\UtilityMatchers\ObjectPropertyMatcher('propertyName'); // or via array $matcher = new \DanHanly\Scientist\UtilityMatchers\ObjectPropertyMatcher(['propertyName', 'anotherPropertyName']);
2.2 ArrayKeyMatcher
这允许您匹配由控制和试验过程返回的数组上的特定键。
2.2.1 简单键匹配
初始化匹配器时,您可以将其配置为通过字符串匹配单个键,或通过数组匹配多个键。
// initialise matcher $matcher = new \DanHanly\Scientist\UtilityMatchers\ArrayKeyMatcher; // define keys via string $matcher->setKeys('keyName'); // or via array $matcher->setKeys(['keyName', 'anotherKeyName']);
您还可以通过匹配器构造函数直接设置键。
// define key via string $matcher = new \DanHanly\Scientist\UtilityMatchers\ArrayKeyMatcher('keyName'); // or via array $matcher = new \DanHanly\Scientist\UtilityMatchers\ArrayKeyMatcher(['keyName', 'anotherKeyName']);
2.2.2 深度键匹配
可以使用 ->
分隔符进行数组深度键匹配。
例如,如果您想匹配地址的邮政编码,但地址存储在 $array['data']['user']['address']['zip']
,则匹配符号将是 data->user->address->zip
// define key via string $matcher = new \DanHanly\Scientist\UtilityMatchers\ArrayKeyMatcher('data->user->address->zip');
2.3 MinMaxMatcher
这允许您确保试验值和控制值都在预定义的阈值内。
初始化匹配器时,您可以配置它仅匹配大于最小值、小于最大值或两者结合的值。
第一个参数是最小值,第二个参数是最大值。
// intialise with a 0 minimum $matcher = new \DanHanly\Scientist\UtilityMatchers\MinMaxMatcher(0); // intialise with a 10 maximum $matcher = new \DanHanly\Scientist\UtilityMatchers\MinMaxMatcher(null, 10); // intialise between 0 and 10 $matcher = new \DanHanly\Scientist\UtilityMatchers\MinMaxMatcher(0, 10);
3. 使用
初始化和配置您的匹配器后,您可以在实验中使用它。
$experiment = (new Scientist\Laboratory) ->experiment('experiment title') ->control($controlCallback) ->trial('trial name', $trialCallback) ->matcher($matcher);