如何注册和使用Laravel服务提供商

本文详细介绍了Laravel框架中的服务容器和服务提供商的概念。服务容器是一个管理组件依赖的容器,而服务提供商则是向服务容器注册组件的地方。通过创建自定义服务提供者,并在应用程序中注册,可以将自定义服务绑定到服务容器。register方法用于定义服务绑定,boot方法则用于扩展核心功能,如注册事件监听器或视图编辑器。本文通过实际示例展示了服务提供者在Laravel应用中的作用。
摘要由CSDN通过智能技术生成

如果您曾经遇到过Laravel框架,那么您极少听说过服务容器和服务提供商。 实际上,它们是Laravel框架的骨干,并且在您启动任何Laravel应用程序的实例时会承担所有繁重的工作。

在本文中,我们将大致了解服务容器的含义,然后,我们将详细讨论服务提供者。 在本文的过程中,我还将演示如何在Laravel中创建自定义服务提供程序。 创建服务提供者后,还需要在Laravel应用程序中注册它才能真正使用它,因此我们也将进行介绍。

您的服务提供商可以实现两种重要的方法,即引导和注册,在本文的最后一部分中,我们将彻底讨论这两种方法。

在我们深入讨论服务提供商之前,我将尝试介绍服务容器,因为它将在您的服务提供商实现中大量使用。

了解服务容器和服务提供商

什么是服务容器?

用最简单的话来说,我们可以说Laravel中的服务容器是一个容纳各种组件绑定的盒子,并且在整个应用程序中根据需要提供它们。

用Laravel官方文档的话来说:

Laravel服务容器是用于管理类依赖关系和执行依赖关系注入的强大工具。

因此,每当需要注入任何内置组件或服务时,都可以在构造函数或方法中键入hint,由于包含了所需的一切,它将自动从服务容器中注入! 那不是很酷吗? 它使您不必手动实例化组件,从而避免了代码之间的紧密耦合。

让我们看一个简单的例子来理解它。

Class SomeClass
{
    public function __construct(FooBar $foobarObject)
    {
        // use $foobarObject object
    }
}

如您所见, SomeClass需要一个FooBar实例来实例化自身。 因此,基本上,它具有需要注入的依赖项。 Laravel通过查看服务容器并注入适当的依赖项来自动执行此操作。

而且,如果您想知道Laravel如何知道服务容器中要包括哪些组件或服务,答案就是服务提供者。 正是服务提供者告诉Laravel将各种组件绑定到服务容器中。 实际上,这称为服务容器绑定,您需要通过服务提供者来完成。

因此,是服务提供者注册所有服务容器绑定,并且是通过服务提供者实现的register方法完成的。

那应该带来另一个问题:Laravel如何了解各种服务提供商? 你刚才说什么吗 我刚刚听到有人说,Laravel也应该自动弄清楚! 噢,男孩,这个问题太多了:Laravel是一个框架,而不是超人,不是吗? 开个玩笑,这是您需要明确告知Laravel的事情。

继续查看config/app.php文件的内容。 您会发现一个数组条目,其中列出了在Laravel应用程序引导过程中将要加载的所有服务提供程序。

'providers' => [
 
        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        Illuminate\Bus\BusServiceProvider::class,
        Illuminate\Cache\CacheServiceProvider::class,
        Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
        Illuminate\Cookie\CookieServiceProvider::class,
        Illuminate\Database\DatabaseServiceProvider::class,
        Illuminate\Encryption\EncryptionServiceProvider::class,
        Illuminate\Filesystem\FilesystemServiceProvider::class,
        Illuminate\Foundation\Providers\FoundationServiceProvider::class,
        Illuminate\Hashing\HashServiceProvider::class,
        Illuminate\Mail\MailServiceProvider::class,
        Illuminate\Notifications\NotificationServiceProvider::class,
        Illuminate\Pagination\PaginationServiceProvider::class,
        Illuminate\Pipeline\PipelineServiceProvider::class,
        Illuminate\Queue\QueueServiceProvider::class,
        Illuminate\Redis\RedisServiceProvider::class,
        Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
        Illuminate\Session\SessionServiceProvider::class,
        Illuminate\Translation\TranslationServiceProvider::class,
        Illuminate\Validation\ValidationServiceProvider::class,
        Illuminate\View\ViewServiceProvider::class,
 
        /*
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值