[ Lumen 5.2 文档 ] 更多特性 -- 服务提供者_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:26:33
原创
1423人浏览过

1、简介

服务提供者是lumen应用启动的中心,你自己的应用以及所有lumen的核心服务都是通过服务提供者启动。

但是,我们所谓的”启动“指的是什么?通常,这意味着注册对象,包括注册服务容器绑定、事件监听器、中间件甚至路由。服务提供者是应用配置的中心。

如果你打开Lumen自带的 bootstrap/app.php文件,将会看到一个 $app->register()调用,这里就是应用所要加载的所有服务提供者类。

2、编写服务提供者

所有的服务提供者继承自 Illuminate\Support\ServiceProvider类。继承该抽象类要求至少在服务提供者中定义一个方法: register。在 register方法内,你唯一要做的事情就是绑定对象到服务容器,不要尝试在其中注册任何事件监听器,路由或者任何其它功能。

2.1 register方法

立即学习前端免费学习笔记(深入)”;

行者AI
行者AI

行者AI绘图创作,唤醒新的灵感,创造更多可能

行者AI 100
查看详情 行者AI

正如前面所提到的,在 register方法中只绑定事物到服务容器,而不要做其他事情,否则话,一不小心就能用到一个尚未被加载的服务提供者提供的服务。

现在让我们来看看一个基本的服务提供者长什么样:

<?phpnamespace App\Providers;use Riak\Connection;use Illuminate\Support\ServiceProvider;class RiakServiceProvider extends ServiceProvider{    /**     * 在容器中注册绑定.     *     * @return void     */    public function register()    {        $this->app->singleton('Riak\Contracts\Connection', function ($app) {            return new Connection(config('riak'));        });    }}
登录后复制

该服务提供者只定义了一个 register方法,并使用该方法在服务容器中定义了一个 Riak\Connection的实现。如果你不太理解服务容器是怎么工作的,查看其文档。

2.2 boot方法

如果我们想要在服务提供者中注册视图composer该怎么做?这就要用到 boot方法了。该方法在所有服务提供者被注册以后才会被调用,这就是说我们可以在其中访问框架已注册的所有其它服务:

<?phpnamespace App\Providers;use Queue;use Illuminate\Support\ServiceProvider;class AppServiceProvider extends ServiceProvider{    // Other Service Provider Properties...    /**     * Bootstrap any application services.     *     * @return void     */    public function boot()    {        Queue::failing(function ($event) {        });    }}
登录后复制

3、注册服务提供者

所有服务提供者都是通过配置文件 bootstrap/app.php中进行注册,该文件包含了一个 $app->register()方法调用,你可以将自己自定义的服务提供者放到该方法调用中来注册服务提供者。

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号