danhanly/scientist-utility-matcher

Scientist 的实用匹配器

0.2.0 2016-02-07 20:17 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:26:13 UTC


README

Scientist

Scientist 实用匹配器

Packagist Version Packagist

简单类型,用于与 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);