当前位置: 首页 > news >正文

商城网站的功能会员插件wordpress

商城网站的功能,会员插件wordpress,制作书签怎么做,购买已备案网站做非法依赖注入模式(Dependency Injection)由 学院君 创建于5年前, 最后更新于 10个月前版本号 #318333 views16 likes0 collects1、模式定义依赖注入(Dependency Injection)是控制反转(Inversion of Control)的一种实现方式。我们先来看看什么是控制反转。当调用者需要被调用者的协助…依赖注入模式(Dependency Injection)由 学院君 创建于5年前, 最后更新于 10个月前版本号 #318333 views16 likes0 collects1、模式定义依赖注入(Dependency Injection)是控制反转(Inversion of Control)的一种实现方式。我们先来看看什么是控制反转。当调用者需要被调用者的协助时在传统的程序设计过程中通常由调用者来创建被调用者的实例但在这里创建被调用者的工作不再由调用者来完成而是将被调用者的创建移到调用者的外部从而反转被调用者的创建消除了调用者对被调用者创建的控制因此称为控制反转。要实现控制反转通常的解决方案是将创建被调用者实例的工作交由 IoC 容器来完成然后在调用者中注入被调用者(通过构造器/方法注入实现)这样我们就实现了调用者与被调用者的解耦该过程被称为依赖注入。依赖注入不是目的它是一系列工具和手段最终的目的是帮助我们开发出松散耦合(loose coupled)、可维护、可测试的代码和程序。这条原则的做法是大家熟知的面向接口或者说是面向抽象编程。2、UML 类图3、示例代码在本例中我们在 Connection 类(调用者)的构造方法中依赖注入 Parameters 接口的实现类(被调用者)如果不使用依赖注入的话则必须在 Connection 中创建该接口的实现类实例这就形成紧耦合代码如果我们要切换成该接口的其它实现类则必须要修改代码这对到测试和扩展而言都是极为不利的。AbstractConfig.phpnamespace DesignPatterns\Structural\DependencyInjection;/*** AbstractConfig类*/abstract class AbstractConfig{/*** var Storage of data*/protected $storage;public function __construct($storage){$this-storage $storage;}}Parameters.phpnamespace DesignPatterns\Structural\DependencyInjection;/*** Parameters接口*/interface Parameters{/*** 获取参数** param string|int $key** return mixed*/public function get($key);/*** 设置参数** param string|int $key* param mixed $value*/public function set($key, $value);}ArrayConfig.phpnamespace DesignPatterns\Structural\DependencyInjection;/*** ArrayConfig类** 使用数组作为数据源*/class ArrayConfig extends AbstractConfig implements Parameters{/*** 获取参数** param string|int $key* param null $default* return mixed*/public function get($key, $default null){if (isset($this-storage[$key])) {return $this-storage[$key];}return $default;}/*** 设置参数** param string|int $key* param mixed $value*/public function set($key, $value){$this-storage[$key] $value;}}Connection.phpnamespace DesignPatterns\Structural\DependencyInjection;/*** Connection类*/class Connection{/*** var Configuration*/protected $configuration;/*** var Currently connected host*/protected $host;/*** param Parameters $config*/public function __construct(Parameters $config){$this-configuration $config;}/*** connection using the injected config*/public function connect(){$host $this-configuration-get(host);// connection to host, authentication etc...//if connected$this-host $host;}/** 获取当前连接的主机** return string*/public function getHost(){return $this-host;}}4、测试代码Tests/DependencyInjectionTest.phpnamespace DesignPatterns\Structural\DependencyInjection\Tests;use DesignPatterns\Structural\DependencyInjection\ArrayConfig;use DesignPatterns\Structural\DependencyInjection\Connection;class DependencyInjectionTest extends \PHPUnit_Framework_TestCase{protected $config;protected $source;public function setUp(){$this-source include config.php;$this-config new ArrayConfig($this-source);}public function testDependencyInjection(){$connection new Connection($this-config);$connection-connect();$this-assertEquals($this-source[host], $connection-getHost());}}Tests/config.phpreturn array(host github.com);5、总结依赖注入模式需要在调用者外部完成容器创建以及容器中接口与实现类的运行时绑定工作在 Laravel 中该容器就是服务容器而接口与实现类的运行时绑定则在服务提供者中完成。此外除了在调用者的构造函数中进行依赖注入外还可以通过在调用者的方法中进行依赖注入。
http://www.yutouwan.com/news/2043/

相关文章:

  • c2c电商网站有哪些seo专员很难吗
  • 旅游网站开发文档怎么写企业网站优化推广怎么做
  • 有限公司有哪些博山网站seo
  • 网站建设速度如何解决自建网站迁移
  • 欧美网站设计风格装饰公司网站建站
  • 哪些网站可以看一级a做爰片wordpress 图片延迟加载插件
  • php做网站界面代码江门网站推广哪家好
  • 青岛网站互联网公司专业网站建设软件开发
  • aspcms网站模板建盏十大高端客户
  • 皮具制品 东莞网站建设北京做电子系统网站的公司
  • js网站分页怎么做注册公司需要费用吗
  • 为什么做美食视频网站张家港做网站的推荐
  • 烈士陵园网站建设方案百度文库自适应网站建设软件
  • 四川省查询建设人员注册证书网站做视频网站的上市公司
  • 做提升自己的网站网站建设分金手指排名四
  • 网站图标可以用ps 做吗wordpress建站网页无法运
  • 模板网站和插件室内设计找哪个公司好
  • 网站视频下载到手机怎么做什么物流公司网站建设
  • 内蒙古城乡建设网站宁波哪里有网站建设
  • 品牌网站建设 飞沐什么是网站销售
  • 凯里展示型网站设计深圳网站建设网站优化服务
  • 遵义网站建设制作c2c交易平台下载
  • seo优化上首页南昌网站seo技术
  • 抛丸机网站怎么做网站建设与管理是学什么
  • 慈溪网站优化公司门户网站模板
  • 网站引导视频怎么做网站的seo方案怎么做
  • 广西长长路桥建设有限公司网站番禺网站开发服务
  • 导航栏网站建站常德市建设工程造价网站
  • 建设银行网站登录信阳网站开发建设公司
  • 网站建设推广方法百家号关键词排名优化