作业:Container 注入

Original 2018-11-19 23:19:36 249
abstract:<?php //数据库操作类 class Db { //数据库连接 public function connect() { return '数据库连接成功<br>'; } } //数据验证类 class Validate { //数据验证 public function che
<?php
//数据库操作类
class Db
{
	//数据库连接
	public function connect()
	{
		return '数据库连接成功<br>';
	}
}

//数据验证类
class Validate
{
	//数据验证
	public function check()
	{
		return '数据验证成功<br>';
	}
}

//视图图
class View
{
	//内容输出
	public function display()
	{
		return '用户登录成功';
	}
}

//创建容器类
class Container{
	//创建一个属性,用于放类与类的实例化方法
	protected $instance=[];
	//初始化实例数组,将需要实例化的类,与实例化的方法进行绑定
	public function bind($abstract,Closure $process){
		$this->instance[$abstract]=$process;
	}
	//创建类的实例
	public function make($abstract,$params=[]){
		return call_user_func_array($this->instance[$abstract],[]);
	}
}

$container=new Container();
//将Db类绑定到容器中
$container->bind('db', function(){
	return new Db();
});

//将Validate类实例绑定到容器中
$container->bind('validate', function(){
	return new Validate();
});

//将View类实例绑定到容器中
$container->bind('view', function(){
	return new View();
});


class User{
	public function login(Container $container){
		echo $container->make('db')->connect();

		//实例化Validate类并调用check()进行数据验证
		// $validate = new Validate();
		// echo $validate->check();
		echo $container->make('validate')->check();

		//实例化视图类并调用display()显示运行结果
		// $view = new View();
		echo $container->make('view')->display();
	}
}
$user=new User();
$user->login($container);
?>


Correcting teacher:韦小宝Correction time:2018-11-20 09:05:03
Teacher's summary:嗯!写的很不错哦!但是缺少了重要的总结!下次记得带上哦!

Release Notes

Popular Entries