在 ImageUploadHandler 类的 save 方法是不是有性能的优化?

<?php

namespace App\Handlers;

class ImageUploadHandler
{
    // 只允许以下后缀名的图片文件上传
    protected $allowed_ext = ["png", "jpg", "gif", 'jpeg'];

    public function save($file, $folder, $file_prefix)
    {
        .
        .
        .
        $extension = strtolower($file->getClientOriginalExtension()) ?: 'png';

        // 拼接文件名,加前缀是为了增加辨析度,前缀可以是相关数据模型的 ID 
        // 值如:1_1493521050_7BVc9v9ujP.png
        $filename = $file_prefix . '_' . time() . '_' . str_random(10) . '.' . $extension;

        // 如果上传的不是图片将终止操作
        if ( ! in_array($extension, $this->allowed_ext)) {
            return false;
        }
        .
        .
        .
    }
}

如果把判定上传的文件是否是合格格式判定放在前面,先进行判定再做一些文件名的生成是不是会更好一些?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

同意,我就是这么做的。

  1. 判定文件后缀
  2. 设置路径
  3. 设置文件名
  4. 保存文件
  5. 压缩文件(如有需要)
  6. 返回参数
5年前 评论
讨论数量: 3

如果纯粹为了性能的优化,是否还可以将 \App\Handlers\ImageUploadHandler::save 中的判断文件后缀名的代码省略,因为这个判断在 \App\Http\Requests\UserRequest::rules 中就已经做了。。

'avatar' => 'mimes:jpeg,bmp,png,gif|dimensions:min_width=200,min_height=200',
5年前 评论

同意,我就是这么做的。

  1. 判定文件后缀
  2. 设置路径
  3. 设置文件名
  4. 保存文件
  5. 压缩文件(如有需要)
  6. 返回参数
5年前 评论

如果纯粹为了性能的优化,是否还可以将 \App\Handlers\ImageUploadHandler::save 中的判断文件后缀名的代码省略,因为这个判断在 \App\Http\Requests\UserRequest::rules 中就已经做了。。

'avatar' => 'mimes:jpeg,bmp,png,gif|dimensions:min_width=200,min_height=200',
5年前 评论

同意,我就是这么做的。

  1. 判定文件后缀
  2. 设置路径
  3. 设置文件名
  4. 保存文件
  5. 压缩文件(如有需要)
  6. 返回参数
5年前 评论

附议,一般建议把检查语句和卫语句放到函数的最前面,提前检查就行

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!