在 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;
        }
        .
        .
        .
    }
}

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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年前 评论

同意,我就是这么做的。

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

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

5年前 评论

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

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

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