thinkphp6 中 when 的实现原理

<?php

class Demo{

    private $where = ' 1=1 ';

    public function getWhere()
    {
        echo $this->where;
    }

    public function When(string $whereStr = null, \Closure $callable):self
    {
        if ($whereStr && is_callable($callable)) {
            $callable($this);
        }
        return $this;
    }

    public function where(string $where){
        $this->where .= " and ".$where;
    }
}

$a = 1;
$demo = new Demo();
$demo->When($a === 1, function ($cls){
    $cls->where("id=2");
    $cls->where("age >= 23");
});

$demo->getWhere();




  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ThinkPHP6 ,要实现下载 OSS(阿里云对象存储) 的文件,需要使用 OSS SDK。下面是具体的实现步骤: 1. 安装 OSS SDK 使用 Composer 安装 OSS SDK: ``` composer require aliyuncs/oss-sdk-php ``` 2. 在控制器引入 OSS SDK 在控制器引入 OSS SDK: ```php use OSS\OssClient; use OSS\Core\OssException; ``` 3. 定义下载方法 在控制器定义下载方法: ```php public function downloadOssFile() { $accessKeyId = 'yourAccessKeyId'; // 填写阿里云 OSS 的 AccessKeyId $accessKeySecret = 'yourAccessKeySecret'; // 填写阿里云 OSS 的 AccessKeySecret $endpoint = 'yourEndpoint'; // 填写阿里云 OSS 的 endpoint $bucket = 'yourBucket'; // 填写阿里云 OSS 的 bucket 名称 $object = 'yourObject'; // 填写要下载的文件在 OSS 的 object 名称 try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 判断要下载的文件是否存在 if (!$ossClient->doesObjectExist($bucket, $object)) { throw new OssException('要下载的文件不存在!'); } // 获取要下载的文件的元信息 $objectMeta = $ossClient->getObjectMeta($bucket, $object); // 设置要下载的文件的名称 $filename = '要下载的文件的名称'; // 设置要下载的文件的内容类型 $contentType = $objectMeta['content_type']; // 设置要下载的文件的长度 $contentLength = $objectMeta['content-length']; // 设置要下载的文件的内容 $content = $ossClient->getObject($bucket, $object); // 下载文件 return Response::create($content, '200', [ 'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0', 'Content-Disposition' => 'attachment; filename=' . $filename, 'Content-Length' => $contentLength, 'Content-Type' => $contentType, 'Expires' => '0', 'Pragma' => 'public', ]); } catch (OssException $e) { return $e->getMessage(); } } ``` 其,`$accessKeyId`、`$accessKeySecret`、`$endpoint`、`$bucket`、`$object` 都需要替换成自己的阿里云 OSS 的信息。 4. 定义路由 在路由定义路由规则: ```php Route::get('download_oss_file', '控制器名/downloadOssFile'); ``` 其,`download_oss_file` 为路由地址,`控制器名` 为具体的控制器名称。 5. 访问下载链接 在浏览器访问 `http://localhost/download_oss_file` 即可下载 OSS 的文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值