X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fpharext%2FTempfile.php;h=e7205519ea784869a58c821d132609091a4720c3;hb=861260c111bff72f60665393660b6f5375559510;hp=c890cd92262b1ec163bb6d9dc19d5959343afa1e;hpb=d774f309d3216bf1923f6bd5b49ee0fb287e0ce7;p=pharext%2Fpharext diff --git a/src/pharext/Tempfile.php b/src/pharext/Tempfile.php index c890cd9..e720551 100644 --- a/src/pharext/Tempfile.php +++ b/src/pharext/Tempfile.php @@ -2,38 +2,56 @@ namespace pharext; +/** + * Create a new temporary file + */ class Tempfile extends \SplFileInfo { + /** + * @var resource + */ private $handle; - - function __construct($prefix) { + + /** + * @param string $prefix uniqid() prefix + * @param string $suffix e.g. file extension + * @throws \pharext\Exception + */ + public function __construct($prefix, $suffix = ".tmp") { $tries = 0; - /* PharData needs a dot in the filename, sure */ - $temp = sys_get_temp_dir() . "/"; - $omask = umask(077); do { - $path = $temp.uniqid($prefix).".tmp"; + $path = new Tempname($prefix, $suffix); $this->handle = fopen($path, "x"); } while (!is_resource($this->handle) && $tries++ < 10); umask($omask); if (!is_resource($this->handle)) { - throw new \Exception("Could not create temporary file"); + throw new Exception("Could not create temporary file"); } parent::__construct($path); } - - function __destruct() { + + /** + * Unlink the file + */ + public function __destruct() { @unlink($this->getPathname()); } - - function closeStream() { + + /** + * Close the stream + */ + public function closeStream() { fclose($this->handle); } - function getStream() { + /** + * Retrieve the stream resource + * @return resource + */ + public function getStream() { return $this->handle; } }