服务容器

2018-02-23 16:24 更新

简介

Laravel 服务容器是管理类依赖的强力工具。依赖注入是比较专业的说法,真正意思是将类依赖透过构造器或 「setter」 方法注入。

让我们来看一个简单的例子:

<?php namespace App\Handlers\Commands;

use App\User;
use App\Commands\PurchasePodcastCommand;
use Illuminate\Contracts\Mail\Mailer;

class PurchasePodcastHandler {

    /**
     * 一个发信功能的实现
     */
    protected $mailer;

    /**
     * 创建一个新的实例
     *
     * @param  Mailer  $mailer
     * @return void
     */
    public function __construct(Mailer $mailer)
    {
        $this->mailer = $mailer;
    }

    /**
     * 购买一个播客节目
     *
     * @param  PurchasePodcastCommand  $command
     * @return void
     */
    public function handle(PurchasePodcastCommand $command)
    {
        //
    }

}

在这个例子中,当播客被购买时, PurchasePodcast 命令处理器需要发送一封电子邮件。所以,我们将注入一个服务来提供这个能力。当这个服务被注入以后,我们就可以轻易地切换到不同的实现。当测试我们的应用程序时,我们同样也可以轻易地「模拟」,或者创建一个虚拟的发信服务实现,来帮助我们进行测试。

如果要创建一个强大并且大型的应用,或者对 Laravel 的内核做贡献,首先必须对 Laravel 的服务容器进行深入了解。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号