for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Dwo\Aggregator;
use Dwo\Aggregator\Model\Aggregate;
use Malenki\Math\Stats\Stats;
/**
* Class Operator
*
* @author Dave Www <[email protected]>
*/
class Operator
{
const MEAN = 'mean';
const MEAN_HARMONIC = 'mean_harmonic';
const MEDIAN = 'median';
* @param Aggregate $aggregate
* @param array $saveKeys
public static function operation(Aggregate $aggregate, array $saveKeys = [])
$data = $aggregate->getData();
$operations = [];
foreach (array_keys($data) as $key) {
if (isset($saveKeys[$key])) {
$operations[$key] = $saveKeys[$key];
}
foreach ($operations as $key => $operation) {
if (!count($data[$key])) {
switch ($operation) {
default:
case self::MEAN:
case self::MEAN_HARMONIC:
case self::MEDIAN:
$data[$key] = 0;
break;
continue;
$stats = new Stats($data[$key]);
if (!method_exists($stats, $operation)) {
$operation = self::MEAN;
$data[$key] = $stats->$operation();
$data[$key] = $stats->mean();
$data[$key] = $stats->harmonicMean();
$data[$key] = $stats->median();
$aggregate->setData($data);