首页 > 编程 > PHP > 正文

关于PHP的依赖倒置(Dependency Injection)

2020-03-22 19:54:54
字体:
来源:转载
供稿:网友
这篇文章主要介绍了PHP依赖倒置(Dependency Injection)代码实例本文只提供实现代码,需要的朋友可以参考下

实现类:

 ?phphtml' target='_blank'>class Container protected $setings = array(); public function set($abstract, $concrete = null) if ($concrete === null) { $concrete = $abstract; $this- setings[$abstract] = $concrete; public function get($abstract, $parameters = array()) if (!isset($this- setings[$abstract])) { return null; return $this- build($this- setings[$abstract], $parameters); public function build($concrete, $parameters) if ($concrete instanceof Closure) { return $concrete($this, $parameters); $reflector = new ReflectionClass($concrete); if (!$reflector- isInstantiable()) { throw new Exception( Class {$concrete} is not instantiable  $constructor = $reflector- getConstructor(); if (is_null($constructor)) { return $reflector- newInstance(); $parameters = $constructor- getParameters(); $dependencies = $this- getDependencies($parameters); return $reflector- newInstanceArgs($dependencies); public function getDependencies($parameters) $dependencies = array(); foreach ($parameters as $parameter) { $dependency = $parameter- getClass(); if ($dependency === null) { if ($parameter- isDefaultValueAvailable()) { $dependencies[] = $parameter- getDefaultValue(); } else { throw new Exception( Can not be resolve class dependency {$parameter- name}  } else { $dependencies[] = $this- get($dependency- name); return $dependencies;}

实现实例:

 ?phprequire container.php 
独孤九贱(5)_ThinkPHP5视频教程

ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《VeVb.com独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

Peter-Zhu 2017-05-16 12:03:57


独孤九贱(4)_PHP视频教程

江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。PHP 出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

Peter-Zhu 2017-03-20 22:47:17


独孤九贱(1)_HTML5视频教程

《VeVb.com原创html5视频教程》课程特色:php 原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。...

Peter-Zhu 2017-03-13 10:15:11


ThinkPHP5实战之[教学管理系统]

本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

Peter-Zhu 2017-07-24 16:48:56


PHP入门视频教程之一周学会PHP

所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表