萌新laravel踩坑记一:ServiceProvider
一直就听说过laravel
框架,但是从来也没用过,最近有个项目有机会用到,算是个小项目,但是中间遇到的坑还是挺多的,目的就是想记录一下,供大家参考。
注:笔者用的是
laravel
10.48.12
功能需求
- 需求是说,需要将数据库中的图片资源加上七牛云的链接,由于桶设置了私有属性,所以必须通过算法生成链接,因此就想抽象出一个类,
同时使用,经大佬指点,由于是简单的ServiceProvider
的方式注入进来client
类,可以直接用简单注入的方式来实现。
实现部分 已弃用
- 首先在
Services
下创建一个七牛云的Client
类,用于处理七牛云逻辑 - 其次,使用
php artisan make:provider
命令创建一个QiniuServicesProvider
类,并在类中加入:class QiniuServicesProvider extends ServiceProvider { public function register() { $this->app->singleton(Client::class, function () { return new Client(); }); } }
- 使用,直接在
XXXController.php
中,使用App::make(Client::class)
的方式来创建出client
实例即可
已更正,使用简单注入的方式实现
use App\Services\Qiniu\Client;
class Home extends Controller
{
public function __construct(protected Client $client)
{
}
}
坑点
- 看文档时,不太了解
ServiceProvider
的相关概念,以为是直接在Provider
中,直接写逻辑,现在一看真的是差太远。 - 在
Provider
中,原来是想使用构造函数中加入配置参数进行实例化,但是看了下实践,还是觉得直接在Client
类内部自动处理配置逻辑比较合适
多说一句
laravel
小白第一次上手写,请轻喷
疑惑
何时使用 ServiceProvider
目前还没有想清楚,本着如不了解,就不使用的原则,暂时先打个记号,可能等后面具体用到了就能解惑了。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: