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,
]
自定义服务提供者
- 创建服务提供者
php artisan make:provider RiakServiceProvider
- 继承
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()
//
- 注册自定义的服务提供者,在 /config/app.php 中,加入我们自定义的服务提供者
providers => [
//others...
App\\Providers\\ComposerServiceProvider::class,
],
以上是关于Laravel - Provider的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 使用 Provider 为程序提供运行时配置服务