Laravel - Provider

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel - Provider相关的知识,希望对你有一定的参考价值。

Provider:提供者,一般指为应用提供通用一般常用功能的一些类。


Laravel 中的提供者

在 /config/app.php 中,Laravel 提供了现成的 27 个服务提供者供我们随拿取用,包含如下:

下面注释了系统自带服务提供者的功能说明,和其功能文档地址,供大家了解。

providers => [
//身份验证:现成的用户注册登录身份验证一体功能,http://laravel.p2hp.com/cndocs/9.x/authentication
Illuminate\\Auth\\AuthServiceProvider::class,

//重置密码:为系统身份验证附带重置密码功能, http://laravel.p2hp.com/cndocs/9.x/passwords
Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider::class,

//
Illuminate\\Bus\\BusServiceProvider::class,

//缓存服务:提供缓存服务,可以是:支持memcache,redis,dynamodb,mysql等引擎, http://laravel.p2hp.com/cndocs/9.x/cache
Illuminate\\Cache\\CacheServiceProvider::class,

//控制台:为应用提供控制台操作功能, http://laravel.p2hp.com/cndocs/9.x/artisan
Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider::class,

//Cookie
Illuminate\\Cookie\\CookieServiceProvider::class,

//Session http://laravel.p2hp.com/cndocs/9.x/session
Illuminate\\Session\\SessionServiceProvider::class,

//数据库:提供数据库操作功能,http://laravel.p2hp.com/cndocs/9.x/database
Illuminate\\Database\\DatabaseServiceProvider::class,

//加密器:执行可逆加密,使用OpenSSl提供 AES-256、AES-128 加密功能, http://laravel.p2hp.com/cndocs/9.x/encryption
Illuminate\\Encryption\\EncryptionServiceProvider::class,

//哈希器:生成加密散列,提供 Bcrypt、Argon2 两种方式, http://laravel.p2hp.com/cndocs/9.x/hashing
Illuminate\\Hashing\\HashServiceProvider::class,

//文件操作:可以操作本地文件和云系统文件, http://laravel.p2hp.com/cndocs/9.x/filesystem
Illuminate\\Filesystem\\FilesystemServiceProvider::class,

//
Illuminate\\Foundation\\Providers\\FoundationServiceProvider::class,

//邮件服务:内含驱动 MailerSMTP、Mailgun、Postmark、Amazon SES,http://laravel.p2hp.com/cndocs/9.x/mail
Illuminate\\Mail\\MailServiceProvider::class,

//通知服务:用户向用户发送邮件、短信等通知,包含十几种驱动, http://laravel.p2hp.com/cndocs/9.x/notifications
Illuminate\\Notifications\\NotificationServiceProvider::class,

//消息广播:websocket的实时消息,http://laravel.p2hp.com/cndocs/9.x/broadcasting
Illuminate\\Broadcasting\\BroadcastServiceProvider::class,

//分页器:提供数据自动分页功能, http://laravel.p2hp.com/cndocs/9.x/pagination
Illuminate\\Pagination\\PaginationServiceProvider::class,

//管道服务:提供步骤流程服务, https://learnku.com/laravel/t/7543/pipeline-pipeline-design-paradigm-in-laravel
Illuminate\\Pipeline\\PipelineServiceProvider::class,

//队列服务:执行复杂耗时任务时使用的任务队列, http://laravel.p2hp.com/cndocs/9.x/queues
Illuminate\\Queue\\QueueServiceProvider::class,

//Redis:http://laravel.p2hp.com/cndocs/9.x/redis
Illuminate\\Redis\\RedisServiceProvider::class,

//格式转换
Illuminate\\Translation\\TranslationServiceProvider::class,

//验证器:提供表单数据验证功能, http://laravel.p2hp.com/cndocs/9.x/validation
Illuminate\\Validation\\ValidationServiceProvider::class,

//视图服务:提供视图解析处理功能, http://laravel.p2hp.com/cndocs/9.x/views
Illuminate\\View\\ViewServiceProvider::class,

//以下为交由用户自定义的服务提供者,可以覆盖系统的服务提供者
App\\Providers\\AppServiceProvider::class,
App\\Providers\\AuthServiceProvider::class,
App\\Providers\\BroadcastServiceProvider::class,
App\\Providers\\EventServiceProvider::class,
App\\Providers\\RouteServiceProvider::class,
]


自定义服务提供者

  1. 创建服务提供者

php artisan make:provider RiakServiceProvider

  1. 继承 ​​Illuminate\\Support\\ServiceProvider​​​ 类,并实现 ​​register​​​、​​boot​​ 方法

namespace App\\Providers;

use App\\Services\\Riak\\Connection;
use Illuminate\\Support\\ServiceProvider;

class RiakServiceProvider extends ServiceProvider

//使用该属性绑定服务
public $bindings = [
ServerProvider::class => DigitalOceanServerProvider::class,
];

//使用该属性绑定单例
public $singletons = [
DowntimeNotifier::class => PingdomDowntimeNotifier::class,
ServerProvider::class => ServerToolsProvider::class,
];

//在该方法中注册本服务
public function register()

$this->app->singleton(Connection::class, function ($app)
return new Connection(config(riak));
);


//在该方法中实现服务的引导
public function boot()
//

  1. 注册自定义的服务提供者,在 /config/app.php 中,加入我们自定义的服务提供者

providers => [
//others...
App\\Providers\\ComposerServiceProvider::class,
],








以上是关于Laravel - Provider的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Service Provider 概念详解

Laravel 使用 Provider 为程序提供运行时配置服务

Laravel Service Provider 开发时设置延迟加载时遇到的问题

laravel 关联模型 多态关系

Laravel-permission 安装

Laravel中的SQL连接,如何?