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,
],