for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* File was created 07.05.2015 09:11
*
* @author Karsten J. Gerber <[email protected]>
*/
namespace PeekAndPoke\Component\Psi\Operation\Terminal;
use PeekAndPoke\Component\Psi\BinaryFunction;
use PeekAndPoke\Component\Psi\Psi\Map\Identity;
use PeekAndPoke\Component\Psi\TerminalOperation;
use PeekAndPoke\Component\Psi\UnaryFunction;
* CollectToMapOperation
class CollectToMapOperation implements TerminalOperation
{
/** @var \Closure|UnaryFunction|BinaryFunction */
private $keyMapper;
private $valueMapper;
* @param \Closure|UnaryFunction|BinaryFunction $keyMapper
* @param \Closure|UnaryFunction|BinaryFunction $valueMapper
public function __construct($keyMapper, $valueMapper = null)
$this->keyMapper = $keyMapper;
$this->valueMapper = $valueMapper ?: new Identity();
}
* {@inheritdoc}
public function apply(\Iterator $set)
$result = [];
$keyMapper = $this->keyMapper;
$valueMapper = $this->valueMapper;
foreach ($set as $key => $item) {
$result[$keyMapper($item, $key)] = $valueMapper($item, $key);
return $result;