关于依赖注入在PHP框架中的应用讲解.docxVIP

关于依赖注入在PHP框架中的应用讲解.docx

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于依赖注入在PHP框架中的应用讲解

关于依赖注入在PHP框架中的应用现在的 PHP 应用包含了很多对象。有的对象能帮你发送电子邮件,另一个可以帮你把数据持久化到数据库中。在你的应用中,你可能会创建一个管理产品库存的对象,或者是一个处理第三方 API 数据的对象。这篇文章中,我们的关注这件事情:应用做了很多事情,它组织了很多对象来处理每一个任务。在 PHP 的 Symfony 2 框架中,有一个特殊的对象,帮助你实例化、组织和获取应用中的那一系列的对象。它叫 Service Container(服务容器),可以让你标准化和集中化地创建应用中对象。容器让生活简化,它速度很快,包含的架构思想促进代码的重用和解耦。所有 Symfony 2 的核心的类都使用容器,容器为框架的速度和可扩展性做了最大的贡献。先来了解下什么是 Service。简单的说,一个 Service 就是任何的可以完成某类“全局”任务的 PHP 对象。一个 Service 是一个 PHP 对象的通用性的术语,这个对象能执行特定的任务,通常被“全局”地使用,比如一个数据库连接的对象,或者一个能发送电子邮件的对象。如果拥有很多松耦合的 Service,我们就说这个应用遵循了 SOA(面向服务的架构)。创建一个 Service 很简单,你只要为那份能完成特定任务的代码写个类,就 OK 了。一般来说,PHP 对象如果要成为 Service,必须要在应用中被全局的使用。比如一个 Mailer Service 被全局的用于发送电子邮件,但是由 Mailer 发送的邮件内容对象(每次的内容都不同)就不是 Service。既然 Service 这么容易创建,那有啥了不起的呢?如果你开始考虑将应用中的每个功能都分离开来,你就能开始感受 Service 的好处了。因为每个 Service 只做一个工作,你在任何地方都可以轻松地获得并使用它们的功能。每个 Service 也能更容易的被测试和配置,因为在应用中它们是互相分离的。将你的应用组织成一系列独立的 Service 的类,也是面向对象编程的最佳实践之一。这种技能在任何开发语言中都是好程序员的标志。什么是 Service Container。Service Container 也叫 Dependency Injection Container(依赖注入容器),就是一个简单的 PHP 对象,管理着 Service 们的实例化。假设你有个发送电子邮件的 PHP 类。如果不用 Service Container,在你需要它时,都必须手工地创建对象。这也算简单。但是,如果你不想重复地去配置它,就可以把它作为 Service。当你需要创建一个 Service,它依赖了 Service Container 中一个或几个其他的 Service 们时,你才会意识到容器的强大。假设你的一个新的 Service,依赖了发送电子邮件的 Service。只要在新的 Service 配置中将发送电子邮件的 Service 设为参数即可,如果你的这个 Service 后来做了改动,需要再依赖一个 Service,只需要改下配置,增加参数即可。对应到依赖注入模式,其实 Service Container 就是注入器;Service A 依赖 Service B,前者是依赖者,后者是被依赖者;被依赖者的接口一般就是依赖的定义。这次设计模式解决的是整个框架的架构问题,解决了:功能间的松耦合、框架的扩展性,运行效率也高。其实还是蛮羡慕学 Java 的同学,很早就接触一些好的设计和应用,比如:Spring 框架。当然现在 PHP 的新的框架层出不穷,也借鉴各种好的思想。面包和牛奶已经有了,可以吃了。看Laravel的IoC容器文档只是介绍实例,但是没有说原理,之前用MVC框架都没有在意这个概念,无意中在phalcon的文档中看到这个详细的介绍,感觉豁然开朗,复制粘贴过来,主要是好久没有写东西了,现在确实很懒变得!首先,我们假设,我们要开发一个组件命名为SomeComponent。这个组件中现在将要注入一个数据库连接。在这个例子中,数据库连接在component中被创建,这种方法是不切实际的,这样做的话,我们将不能改变数据库连接参数及数据库类型等一些参数。[php]?view plaincopy?php????class?SomeComponent??{????????/**??????*?The?instantiation?of?the?connection?is?hardcoded?inside??????*?the?component?so?is?difficult?to?replace?it?externally??????*?or?change?its?behavior??????*/??????pu

文档评论(0)

22ffbqq + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档