Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
75.00% |
3 / 4 |
CRAP | |
94.12% |
16 / 17 |
Grouped | |
0.00% |
0 / 1 |
|
75.00% |
3 / 4 |
8.01 | |
94.12% |
16 / 17 |
__construct($dataSources = array()) | |
0.00% |
0 / 1 |
4.02 | |
88.89% |
8 / 9 |
|||
addDataSource(DataSourceInterface $dataSource) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getDataSources() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
read() | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
<?php | |
/** | |
* This file is part of the Statistical Classifier package. | |
* | |
* (c) Cam Spiers <camspiers@gmail.com> | |
* | |
* For the full copyright and license information, please view the LICENSE | |
* file that was distributed with this source code. | |
*/ | |
namespace Camspiers\StatisticalClassifier\DataSource; | |
use InvalidArgumentException; | |
/** | |
* @author Cam Spiers <camspiers@gmail.com> | |
* @package Statistical Classifier | |
*/ | |
class Grouped extends DataArray | |
{ | |
/** | |
* The data sources to use | |
* @var array | |
*/ | |
protected $dataSources = array(); | |
/** | |
* Create the object passing in the datasources as an array | |
* @param mixed $dataSources The data sources | |
* @throws \InvalidArgumentException | |
*/ | |
public function __construct($dataSources = array()) | |
{ | |
if (!is_array($dataSources)) { | |
$dataSources = func_get_args(); | |
} | |
if (count($dataSources) < 2) { | |
throw new InvalidArgumentException("A group of data sources must contain at least 2 data sources"); | |
} | |
foreach ($dataSources as $dataSource) { | |
$this->addDataSource($dataSource); | |
} | |
} | |
/** | |
* Add a data source to the array | |
* @param DataSourceInterface $dataSource The data source | |
*/ | |
public function addDataSource(DataSourceInterface $dataSource) | |
{ | |
$this->dataSources[] = $dataSource; | |
} | |
/** | |
* Returns any datasources that are part of the group | |
* @return array | |
*/ | |
public function getDataSources() | |
{ | |
return $this->dataSources; | |
} | |
/** | |
* @{inheritdoc} | |
*/ | |
public function read() | |
{ | |
$groupedData = array(); | |
foreach ($this->dataSources as $dataSource) { | |
$groupedData[] = $dataSource->getData(); | |
} | |
return call_user_func_array('array_merge', $groupedData); | |
} | |
} |