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