标签:new span on() turn 方法 struct 创建 containe ati
<?php
//依赖注入与容器
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();
标签:new span on() turn 方法 struct 创建 containe ati
原文地址:https://www.cnblogs.com/yszr/p/13304874.html