关于容器和外观模式的案例

原创2019-01-06 03:16:2283
摘要://这里是容器模块 <?php class Db { public function connect() { return '数据库连接成功<br>'; } } class Validate { public function check() { return &#
//这里是容器模块
<?php
class Db
{
	public function connect()
	{
		return '数据库连接成功<br>';
	}
}

class Validate
{
	public function check()
	{
		return '数据验证通过<br>';
	}
}

class View
{
	public function display()
	{
		return '用户登录成功<br>';
	}
}

class Container
{
	protected $instance = [];

	public function __get($value)
	{
		return $this->$value;
	}

	public function bind($object,Closure $Closure)
	{
		$this->instance[$object] = $Closure;
	}
	public function make($object,$parameter=[])
	{
		return call_user_func_array($this->instance[$object],[]);
	}
}
$container = new Container;

$container->bind('Db',function(){
	return new Db;
});
$container->bind('Validate',function(){
	return new Validate;
});
$container->bind('View',function(){
	return new View;
});

下面是外观调用

<?php
include 'container.php';

class Facade
{
	protected $container = null;

	public function init(Container $container)
	{
		$this->container = $container;
		echo '<pre>';
		// var_dump($this->container);
	}
	public function connect()
	{
		return $this->container->make('Db')->connect(); 
	}
	public function check()
	{
		return $this->container->make('Validate')->check(); 
	}
	public function display()
	{
		return $this->container->make('View')->display(); 
	}
}
$facade = new Facade;
$facade->init($container);
echo $facade->connect();
echo $facade->check();
echo $facade->display();

按照老师提供的案例自己通过思路做了一遍,感觉一下思想开阔了很多,对于框架的一些调用方法有了一些想法,很实用的案例。

批改老师:灭绝师太批改时间:2019-01-06 10:07:15
老师总结:知识点都是整合过的,不实用的基本被抛却了,完成的不错呦!继续加油!

发布手记

热门词条