本节对应书里的Understanding the framework’s internals。
我原文翻译整理下说明:

依赖注入
Phalcon最强大的特性之一可能就是依赖注入(DI)。如果你不知道依赖注入,你应该至少阅读这个设计模式的wiki页面https://zh.wikipedia.org/wiki/%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5:“依赖注入是种实现控制反转用于解决依赖性设计模式。一个依赖关系指的是可被利用的一种对象(即服务提供端) 。依赖注入是将所依赖的传递给将使用的从属对象(即客户端)。该服务是将会变成客户端的状态的一部分。 传递服务给客户端,而非允许客户端来建立或寻找服务,是本设计模式的基本要求。
其他的详细案例自己看维基百科了解(我他哥的也没怎么看懂,感觉应该直接代码实践慢慢领悟比较好)。

依赖注入的现实例子可能是以下情况:假设你去商场购物。你需要一个袋子来放杂货,但当你离开家的时候你忘记带了。 在这种情况下,您需要买一个袋子。 在开发中,买这个袋子可能耗费昂贵。 所以,如果你的门有扫描仪扫描,并实现除非你有一个袋子,否则不会开门的情况。就可以称为依赖注入。(还是没搞懂……一脸懵逼)

Phalcon使用\Phalcon\DI 组件名称的方式,实现控制反转模式。 这降低了总体代码复杂性。

框架本身或开发人员可以注册服务。 Phalcon有许多内置的组件,在DI容器中可用:

  • Request and response
  • Logger
  • Crypt
  • Flash
  • Router and configuration
  • View
  • Cache
  • Session

在DI中引用新组件的代码也很简单:

<?php
$di = new Phalcon\DI();
// Lazy load
$di['mail'] = function() {
return new \MyApp\Mail();
};

当您需要访问“邮件”组件时,你可以这样调用:

<?php
$mail = $this->getID()->get('mail');
// or
$mail = $this->getDI()->getMail();

如果需要创建自己的DI,则必须实现Phalcon或DiInterface接口以替换Phalcon提供的接口,否则必须扩展当前的接口。
这些只是一些虚拟的例子,当你开始我们的项目时关于Phalcon的DI的有任何想法。 请请花时间阅读官方文档,网址为http://docs.phalconphp.com/en/
latest/reference/di.html。

Related Posts: 零基础学Phalcon 3 了解Phalcon框架的原理 :