🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 简介 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 的服务容器进行深入了解。