103 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
| <?php
 | |
| namespace app\service;
 | |
| 
 | |
| use app\model\Category;
 | |
| use app\model\Article;
 | |
| 
 | |
| class Tool
 | |
| {
 | |
|     //删除文件
 | |
|     public static function delFile($path)
 | |
|     {
 | |
|         if(!empty(trim($path))){
 | |
|             $realPath = app()->getRootPath() . ltrim($path, '/');
 | |
|             if (file_exists($realPath)) {
 | |
|                 $info = pathinfo($realPath);
 | |
|                 $source = $info['dirname'] . DIRECTORY_SEPARATOR . $info['filename'] . '*.' . $info['extension'];
 | |
|                 foreach(glob($source) as $filename){
 | |
|                     if(is_file($filename)){
 | |
|                         unlink($filename);
 | |
|                     }
 | |
|                 }
 | |
|                 clearstatcache();// 清除缓存
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 删除目录下的所有文件和子目录
 | |
|      * 调用完毕后请用clearstatcache()清理缓存
 | |
|      */
 | |
|     public static function removeByPath($path)
 | |
|     {
 | |
|         if(is_dir($path)) {
 | |
|             if($handle = @opendir($path)) {
 | |
|                 while (($file = readdir($handle)) !== false){
 | |
|                     if($file != '.' && $file != '..') {
 | |
|                         $child = $path.'/'.$file;
 | |
|                         is_dir($child) ? self::removeByPath($child) : @unlink($child);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             closedir($handle);
 | |
|         } elseif (is_file($path)) {
 | |
|             @unlink($path);
 | |
|         } else {
 | |
|             return false;
 | |
|         }
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     //去除字符串空格
 | |
|     public static function trimSpace($str)
 | |
|     {
 | |
|         return str_replace(' ', '', trim($str));
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //获取文章链接
 | |
|     public static function getArticleUrl($article)
 | |
|     {
 | |
|         if(empty($article)){
 | |
|             return '';
 | |
|         }
 | |
|         // if(!empty($article['link'])){
 | |
|         //     return $article['link'];
 | |
|         // }
 | |
|         if(empty($article['route'])){
 | |
|             return url('article/detail', ['id' => $article['id']]);
 | |
|         }
 | |
|         $category = Category::getById($article['category_id']);
 | |
|         $categoryRoute = '';
 | |
|         if(isset($category['route']) && !empty($category['route'])){
 | |
|             $categoryRoute = $category['route'];
 | |
|         }
 | |
|         $url = '/';
 | |
|         if(!empty($categoryRoute)){
 | |
|             $url .= $categoryRoute . '/';
 | |
|         }
 | |
|         return $url . $article['route'] . '.html';
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 格式化金钱字段
 | |
|      * @param $money
 | |
|      * @return float
 | |
|      */
 | |
|     public static function moneyFormat($money)
 | |
|     {
 | |
|         $money = is_string($money) ? trim($money) : $money;
 | |
|         return is_numeric($money) ? number_format($money, 2, '.', '') : 0;
 | |
|     }
 | |
|     // 获取客户端IP
 | |
|     public static function get_client_ip() {
 | |
|         $forwarded = request()->header("x-forwarded-for");
 | |
|         if($forwarded){
 | |
|             $ip = explode(',',$forwarded)[0];
 | |
|         }else{
 | |
|             $ip = request()->ip();
 | |
|         }
 | |
|         return $ip;
 | |
|     }
 | |
| }
 |