41 lines
		
	
	
		
			938 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			938 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\b\io;
 | |
| 
 | |
| trait Treader {
 | |
|   function readLines(): array {
 | |
|     $lines = [];
 | |
|     try {
 | |
|       while (true) {
 | |
|         try {
 | |
|           $lines[] = $this->readLine();
 | |
|         } catch (EOFException $e) {
 | |
|           break;
 | |
|         }
 | |
|       }
 | |
|     } finally {
 | |
|       $this->close();
 | |
|     }
 | |
|     return $lines;
 | |
|   }
 | |
| 
 | |
|   function unserialize(?array $options=null, bool $close=true) {
 | |
|     $args = [$this->getContents($close)];
 | |
|     if ($options !== null) $args[] = $options;
 | |
|     return unserialize(...$args);
 | |
|   }
 | |
| 
 | |
|   function copyTo(IWriter $writer, bool $closeWriter=false, bool $closeReader=true): void {
 | |
|     $inr = $this->getResource();
 | |
|     $outr = $writer->getResource();
 | |
|     if ($inr !== null && $outr !== null) {
 | |
|       while (!feof($inr)) {
 | |
|         fwrite($outr, fread($inr, 8192));
 | |
|       }
 | |
|     } else {
 | |
|       $writer->write($this->getContents());
 | |
|     }
 | |
|     if ($closeWriter) $writer->close();
 | |
|     if ($closeReader) $this->close();
 | |
|   }
 | |
| }
 |