php的web容器,理解PHP 依赖注入与容器

e891719895edc9ed382e4aa97a0e6b06.png

//依赖注入与容器

class Luntai{

function roll(){

echo "这是轮胎类::";

}

}

class Bmw{

protected $Luntai;

//注入方式---构造函数注入,还可通过set方式注入

function __construct($Luntai) {

$this->Luntai = $Luntai;

}

function run() {

$this->Luntai->roll(); //调用luntai类的 roll方法

echo "这是宝马的轮胎";

}

}

//使用方法

/*$luntai = new Luntai();

$bmw = new Bmw($luntai);

$bmw->run(); //这是轮胎类::这是宝马的轮胎

*/

/**

* 容器

*/

class Container

{

//存放所要绑定的类

static $register = [];

//绑定函数

//closure 就是个闭包的类型

static function bind($name, Closure $col) {

//将键值对存到register中

//键就是name 值就是col

self::$register[$name] = $col;

}

//创建对象函数

static function make($name){

$col = self::$register[$name];

return $col();

}

}

//将要实例化的类,绑定到register中去。

//以后用到的时候只需要通过make方法获取即可,不需要再重复实例化 ,类似于redis 键值对

Container::bind(‘luntai‘, function(){

return new Luntai();

});

Container::bind(‘bmw‘, function(){

return new Bmw(Container::make(‘luntai‘));

});

$bmw = Container::make(‘bmw‘); //根据键值调用bmw类,并使用其方法

$bmw->run();

理解PHP 依赖注入与容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值