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;
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |