34 lines
691 B
PHP
34 lines
691 B
PHP
|
<?php
|
||
|
namespace nur\mapper\base;
|
||
|
|
||
|
use nur\A;
|
||
|
|
||
|
/**
|
||
|
* Class PushProducer: un producer à qui on peut fournir les valeurs à produire
|
||
|
* au fil de l'eau
|
||
|
*/
|
||
|
class PushProducer extends Producer {
|
||
|
private $iterables;
|
||
|
|
||
|
function push($value, $key=null): void {
|
||
|
$values = $key !== null? [$key => $value]: [$value];
|
||
|
A::append($this->iterables, $values);
|
||
|
}
|
||
|
|
||
|
function pushAll(iterable $values): void {
|
||
|
A::append($this->iterables, $values);
|
||
|
}
|
||
|
|
||
|
function producer() {
|
||
|
if ($this->iterables !== null) {
|
||
|
try {
|
||
|
foreach ($this->iterables as $iterable) {
|
||
|
yield from $iterable;
|
||
|
}
|
||
|
} finally {
|
||
|
$this->iterables = null;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|