nur-sery/nur_src/mapper/base/PushProducer.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;
}
}
}
}