首页 » 网站推广 » php反射依附注入技巧_10分钟快速理解依靠注入

php反射依附注入技巧_10分钟快速理解依靠注入

访客 2024-12-18 0

扫一扫用手机浏览

文章目录 [+]

业务场景

小明要去旅游,但是还未确定以什么办法出游,有可能是徒步旅行,也有可能是自驾游。

php反射依附注入技巧_10分钟快速理解依靠注入

代码演示

php反射依附注入技巧_10分钟快速理解依靠注入
(图片来自网络侵删)

根据步辇儿和驾车的速率来考虑间隔旅游目的地的路程,以是这里定义了两个属性$speed和$distance。
所有有了如下代码:

interface travelInterface{ public function __construct($speed, $distance); public function run();}abstract class travel implements travelInterface{ protected $speed; // 最高时速 protected $distance; // 最远路程 public function __construct($speed, $distance) { $this->speed = $speed; $this->distance = $distance; }}class drive extends travel{ public function run() { echo \公众自驾游\"大众; }}class walk extends travel{ public function run() { echo \公众徒步旅行\"大众; }}

下面是选择自驾游的代码

class human{ protected $travel; // 出行办法 public function __construct() { $this->travel = new drive(60,1000); } public function traveling(){ $this->travel->run(); }}$xiaoming = new human();$xiaoming->traveling();

那么,如果须要换一种出行办法的时候,则须要修正human类。
这里看起来修正非常大略,但是我们实际项目中可能会夹杂着很多的业务逻辑一起修正。

就说下依赖注入的根本办法

class human{ protected $travel; // 出行办法 public function __construct(travel $travel) { $this->travel = $travel; } public function traveling(){ $this->travel->run(); }}$travel = new drive(60,1000);$xiaoming = new human($travel);$xiaoming->traveling();

什么是依赖注入。

大略的说:在A类中利用了B类的实例时,B工具的布局不是在A类某个方法中初始化的,而是在A类外部初始化之后以B类的工具传入进来。
这个过程便是依赖注入。

换一种通过配置文件来实现掌握反转

$config = [ \公众travel\"大众 => drive::class,];$travel = new $config[\公众travel\公众](60,1000);$xiaoming = new human($travel);$xiaoming->traveling();

通过上面的办法,以什么办法旅行,只须要修正配置$config就行。

这在我们PHP里感触不明显,以为修正$config和修正$travel = new drive(60,1000)差别不到,一方面是便于管理,另一方面是PHP的非编译型的特性上风。
如果用Java来实现,感触就非常明显了,比如程序已经打包了,只须要修正配置文件,就可以掌握类的依赖关系了。
起到理解耦的浸染。
(千锋PHP培训)

虽然很多时候大家一说到掌握反转,依赖注入,就非要和说到反射,我以为上面IOC只是一种思想,详细的实现办法,在不同的措辞中有不同的表现形式。
只要将这种依赖关系解耦出来,可以配置化便是IOC的实现了。

相关文章

php常量率低技巧_PHP 常量详解教程

PHP 常量常量是单个值的标识符(名称)。在脚本中无法改变该值。有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。注释...

网站推广 2024-12-19 阅读1 评论0