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