fdin = fopen($filename, 'rb'); } public function setOutputFile(string $filename) { if (ctype_digit($filename) && !file_exists($filename)) { $filename = "php://fd/" . $filename; } $this->fdout = fopen($filename, 'wb'); } public function addFilter(FilterInterface $filter) { $this->filters[] = $filter; } public function run() { while (!feof($this->fdin)) { ob_start(); $buf = fread($this->fdin, 8192); foreach ($this->filters as $filter) { $buf = $filter->pipe($buf); } ob_end_clean(); fwrite($this->fdout, $buf); } ob_start(); foreach ($this->filters as $filter) { $filter->pipe(null); } ob_end_clean(); } }