1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php依赖注入 简书 PHP 依赖注入容器

php依赖注入 简书 PHP 依赖注入容器

时间:2022-06-30 18:36:32

相关推荐

php依赖注入 简书 PHP 依赖注入容器

-11-13_5fae3e971d521.png

介绍

使用 PHP 的反射类 ReflectionClass,创建容器方便管理依赖注入。

代码

interface GrowthInterface

{

public function evolve();

}

class Agumon implements GrowthInterface

{

public function evolve()

{

echo "亚古兽进化\n";

}

}

class Gabumon implements GrowthInterface

{

public function evolve()

{

echo "加布兽进化\n";

}

}

class DigitalBaby

{

public $growth;

public function __construct(GrowthInterface $growth)

{

$this->growth = $growth;

}

}

class DigitalWorld

{

protected $instances = [];

protected $bind = [];

public function set($digitalBabyName, $digitalBaby)

{

if (!class_exists($digitalBaby)) {

echo '我不知道数码宝贝是什么';

} else {

$this->bind[$digitalBabyName] = $digitalBaby;

}

}

public function get($digitalBabyName, $digitalBaby)

{

if (isset($this->instances[$digitalBabyName])) {

return $this->instances[$digitalBabyName];

}

if (!isset($this->bind[$digitalBabyName])) {

echo $digitalBabyName."这只数码宝贝貌似不存在";

}

$reflect = new ReflectionClass($this->bind[$digitalBabyName]);

return $this->instances[$digitalBabyName] = $reflect->newInstanceArgs($digitalBaby);

}

}

$digitalWorld = new DigitalWorld();

$digitalWorld->set('Agumon','DigitalBaby');

$digitalWorld->set('Gabumon','DigitalBaby');

echo $digitalWorld->get('Agumon',[new Agumon])->growth->evolve();

echo $digitalWorld->get('Gabumon',[new Gabumon])->growth->evolve();

创建 digitalBaby.php,代码如上。

执行

$ php digitalBaby.php

亚古兽进化

加布兽进化

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。