Laravel学习-容器

容器基本认识

laravel框架应用程序的实例就是一个容器,改实例是在bootstrap/app.php内初始化:

$app = new Illuminate\Foundation\Application(
    realpath(__DIR__ . '/../')
);

该实例在整个生命周期里是唯一的,后续相关的服务都是在该实例上执行的。


在项目中获取容器实例的方法
  • 通过app函数获取

    $app = app();

  • 通过face获取

    App::boot();

  • 通过服务提供者的属性获取

    服务提供者类都是由laravel容器实例化的,这些类都继承自Illuminate\Support\ServiceProvider,它定义了一个实例属性$app。


容器结构

容器的结构上包含了许多数组,用来存储各种服务,如果想要深入了解,需要搞清楚这些数组的含义。


实例如何绑定与解析服务

通过字面含义,容器是用来存储对象,服务的存入和取出就是绑定与解析的过程。

绑定服务的几种方式:
app()->singleton(...)
app()->bind(...)
app()['service'] =...

具体参考laravel的文档

解析服务的几种方式:
app()->make('service')
app()['service']
app('service')

如果都具体实现感兴趣可以深入去查看这些方法的实现。


服务提供者

前面提到了如何绑定与解析服务,那么具体的服务就得靠服务提供者来提供具体的服务了,所以服务提供者起到把具体的逻辑绑定到容器上的作用。
平时你一定发现每个laravel的扩展包都有一个继承Illuminate\Support\ServiceProvider的服务提供者类。
在我们的config/app.php里面引入自定义的服务提供者,我们就可以在代码中通过实例解析服务来使用扩展了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员无为

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值