Hallo.
Wie die Überschrift schon sagt, ich habe (aus Langeweile, versteht sich), mal einen Streamreader für PHP gebastelt (Kann nützlich sein, wenn Fragen nach dem Sinn von allow_url_fopen aufkommen z.B.).
Nun wollte ich mir mal dazu (zum Code) ein paar Meinungen einholen, vorallem was das Error-Handling angeht.
Achja hier der Code
Wie die Überschrift schon sagt, ich habe (aus Langeweile, versteht sich), mal einen Streamreader für PHP gebastelt (Kann nützlich sein, wenn Fragen nach dem Sinn von allow_url_fopen aufkommen z.B.).
Nun wollte ich mir mal dazu (zum Code) ein paar Meinungen einholen, vorallem was das Error-Handling angeht.
Achja hier der Code
PHP-Code:
class streamreader
{
protected $stream;
public function __construct(&$streamres)
{
if (is_resource($streamres))
{
$this->stream = $streamres;
}
else
{
trigger_error('Parameter is not a Resource', E_USER_ERROR);
}
}
public function reset()
{
$check = fseek($this->stream, 0);
if ($check == -1) trigger_error('Unable to reset the Filehandler', E_USER_WARNING);
}
public function readAll()
{
$this->reset();
$file = '';
while (!feof($this->stream))
{
$file .= fread($this->stream, 4096);
}
return $file;
}
public function readlines($crlf = false)
{
$this->reset();
$lines = array();
while (!feof($this->stream))
{
$line = $this->readline(4096, $crlf);
if ($line !== false && $line !== "") $lines[] = $line;
}
return $lines;
}
public function csv()
{
$text = $this->readAll();
$lines = explode("\n", $text);
$csv = array();
$i = 0;
foreach ($lines as $index => $value)
{
$csv[$i][$index] = explode(',', trim($value));
$i++;
}
}
protected function readline($length = 4096, $crlf = false)
{
$line = fgets($this->stream, $length);
$line = ($crlf) ? rtrim($line) : $line;
if ($line !== false) return $line;
else return '';
}
public function close()
{
fclose($this->stream);
}
public function __destruct()
{
$this->close();
}
}
Kommentar