1<?php 2 3/* 4 * This file is part of the Assetic package, an OpenSky project. 5 * 6 * (c) 2010-2014 OpenSky Project Inc 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Assetic\Util; 13 14/** 15 * Filesystem utilities. 16 * 17 * @author Kris Wallsmith <kris.wallsmith@gmail.com> 18 */ 19class FilesystemUtils 20{ 21 /** 22 * Recursively removes a directory from the filesystem. 23 */ 24 public static function removeDirectory($directory) 25 { 26 $inner = new \RecursiveDirectoryIterator($directory, \FilesystemIterator::SKIP_DOTS); 27 $outer = new \RecursiveIteratorIterator($inner, \RecursiveIteratorIterator::SELF_FIRST); 28 29 // remove the files first 30 foreach ($outer as $file) { 31 if ($file->isFile()) { 32 unlink($file); 33 } 34 } 35 36 // remove the sub-directories next 37 $files = iterator_to_array($outer); 38 foreach (array_reverse($files) as $file) { 39 /** @var \SplFileInfo $file */ 40 if ($file->isDir()) { 41 rmdir($file); 42 } 43 } 44 45 // finally the directory itself 46 rmdir($directory); 47 } 48 49 /** 50 * Creates a throw-away directory. 51 * 52 * This is not considered a "temporary" directory because it will not be 53 * automatically deleted at the end of the request or process. It must be 54 * deleted manually. 55 * 56 * @param string $prefix A prefix for the directory name 57 * 58 * @return string The directory path 59 */ 60 public static function createThrowAwayDirectory($prefix) 61 { 62 $directory = self::getTemporaryDirectory().DIRECTORY_SEPARATOR.uniqid('assetic_'.$prefix); 63 mkdir($directory); 64 65 return $directory; 66 } 67 68 /** 69 * Creates a temporary file. 70 * 71 * @param string $prefix A prefix for the file name 72 * 73 * @return string The file path 74 */ 75 public static function createTemporaryFile($prefix) 76 { 77 return tempnam(self::getTemporaryDirectory(), 'assetic_'.$prefix); 78 } 79 80 public static function getTemporaryDirectory() 81 { 82 return realpath(sys_get_temp_dir()); 83 } 84} 85