close(); } } return $file; } static function writer($output, ?string $mode=null, ?callable $func=null): FileWriter { $file = new FileWriter($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; } }