<?php namespace nulib; use nulib\file\FileReader; use nulib\file\FileWriter; use nulib\file\MemoryStream; use nulib\file\SharedFile; use nulib\file\TempStream; use nulib\file\TmpfileWriter; /** * Class file: outils pour gérer les fichiers */ class file { static function fix_dash($file) { if ($file === "-") $file = null; return $file; } static function reader($input, ?callable $func=null): FileReader { $file = new FileReader(self::fix_dash($input)); if ($func !== null) { try { $func($file); } finally { $file->close(); } } return $file; } static function writer($output, ?string $mode="w+b", ?callable $func=null): FileWriter { $file = new FileWriter(self::fix_dash($output), $mode); if ($func !== null) { try { $func($file); } finally { $file->close(); } } return $file; } static function shared($file, ?callable $func=null): SharedFile { $file = new SharedFile($file); if ($func !== null) { try { $func($file); } finally { $file ->close(); } } return $file; } static function tmpwriter($destdir=null, ?callable $func=null): TmpfileWriter { $file = new TmpfileWriter($destdir); if ($func !== null) { try { $func($file); } finally { $file->close(); } } return $file; } static function memory(?callable $func=null): MemoryStream { $file = new MemoryStream(); if ($func !== null) { try { $func($file); } finally { $file->close(); } } return $file; } static function temp(?callable $func=null): TempStream { $file = new TempStream(); if ($func !== null) { try { $func($file); } finally { $file->close(); } } return $file; } }