FileHelper.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace common\helpers;
  3. use yii\helpers\BaseFileHelper;
  4. /**
  5. * Class FileHelper
  6. * @package common\helpers
  7. * @author jianyan74 <751393839@qq.com>
  8. */
  9. class FileHelper extends BaseFileHelper
  10. {
  11. /**
  12. * 检测目录并循环创建目录
  13. *
  14. * @param $catalogue
  15. */
  16. public static function mkdirs($catalogue)
  17. {
  18. if (!file_exists($catalogue)) {
  19. self::mkdirs(dirname($catalogue));
  20. mkdir($catalogue, 0777);
  21. }
  22. return true;
  23. }
  24. /**
  25. * 写入日志
  26. *
  27. * @param $path
  28. * @param $content
  29. * @return bool|int
  30. */
  31. public static function writeLog($path, $content)
  32. {
  33. self::mkdirs(dirname($path));
  34. return file_put_contents($path, "\r\n" . $content, FILE_APPEND);
  35. }
  36. /**
  37. * 获取文件夹大小
  38. *
  39. * @param string $dir 根文件夹路径
  40. * @return int
  41. */
  42. public static function getDirSize($dir)
  43. {
  44. $handle = opendir($dir);
  45. $sizeResult = 0;
  46. while (false !== ($folderOrFile = readdir($handle))) {
  47. if ($folderOrFile != "." && $folderOrFile != "..") {
  48. if (is_dir("$dir/$folderOrFile")) {
  49. $sizeResult += self::getDirSize("$dir/$folderOrFile");
  50. } else {
  51. $sizeResult += filesize("$dir/$folderOrFile");
  52. }
  53. }
  54. }
  55. closedir($handle);
  56. return $sizeResult;
  57. }
  58. /**
  59. * 基于数组创建目录
  60. *
  61. * @param $files
  62. */
  63. public static function createDirOrFiles($files)
  64. {
  65. foreach ($files as $key => $value) {
  66. if (substr($value, -1) == '/') {
  67. mkdir($value);
  68. } else {
  69. file_put_contents($value, '');
  70. }
  71. }
  72. }
  73. /**
  74. * 软著文件生成
  75. *
  76. * @param $dir
  77. * @param $savePath
  78. */
  79. public static function getDirFileContent($dir, $savePath, $suffix = ['php'])
  80. {
  81. $handle = opendir($dir);
  82. while (false !== ($folderOrFile = readdir($handle))) {
  83. if ($folderOrFile != "." && $folderOrFile != "..") {
  84. if (is_dir("$dir/$folderOrFile")) {
  85. self::getDirFileContent("$dir/$folderOrFile", $savePath, $suffix);
  86. } else {
  87. $array = explode('.', $folderOrFile);
  88. if (in_array(end($array), $suffix)) {
  89. // 去除注释
  90. $str = StringHelper::removeAnnotation(file_get_contents("$dir/$folderOrFile"));
  91. // 追加写入
  92. file_put_contents($savePath, $str, FILE_APPEND);
  93. }
  94. }
  95. }
  96. }
  97. }
  98. }
粤ICP备19079148号