php

Laravel Contracts

Contracts Laravel的Contracts(契约)是一系列框架用来定义核心服务的接口,一系列的标准,用来解耦具体需求对实现的依赖关系。这个依赖问题在之前的依赖注入和服务容器的文章中提到过,你可以把Contracts理解成例子中的Mail接口。 框架对每个契约都提供了相应的实现。例如,Laravel为队列提供了各种驱动的实现,为邮件提供了由 SwiftMailer驱动的实现。 在Illuminate/Foundation/Application.php中你可以看到默认Contracts实现的绑定。 /** * Register the core class aliases in the container. * * @return void */ public function registerCoreContainerAliases() { $aliases = [ 'app' =>

  • sidfate
    sidfate
2 min read
php

Laravel 服务容器和依赖注入

依赖注入(DI) 当A类需要依赖于B类,也就是说需要在A类中实例化B类的对象来使用时候,如果B类中的功能发生改变,也会导致A类中使用B类的地方也要跟着修改,导致A类与B类高耦合。这个时候解决方式是,A类应该去依赖B类的接口,把具体的类的实例化交给外部。 就拿在业务需求中经常会用到的发送邮件举例,假如我们现在在Business业务类中需要发送邮件,下面的代码可以实现。 <?php class Email { public function send() { echo "send an email"; } } class Business { protected $mailer; public function __construct(

  • sidfate
    sidfate
4 min read