用依赖注入,容器,Facade模式完成作业

原创 2019-01-26 21:22:01 303
摘要:<?php //工具类 class Db { public function connect($localhost,$user,$pwd) { return '主机是'.$localhost.',用户是'.$user.',密码是'.$pwd; } } class Validate {
<?php
//工具类
class Db
{
	public function connect($localhost,$user,$pwd)
	{
		return '主机是'.$localhost.',用户是'.$user.',密码是'.$pwd;
	}
}

class Validate
{
	public function check($user,$pwd)
	{
		if($user=='admin' && $pwd=='123'){
			return '验证通过';
		}else{
			return '验证失败';
		}
	}
}

class View
{
	public function display()
	{
		return '恭喜,登录成功!';
	}
}
<?php
//容器类
require './Classes.php';
class Container
{
	protected $instance = [];
	public function bind($className,Closure $closure)
	{
		$this->instance[$className] = $closure;
	}

	public function make($className,$param=[])
	{
		return call_user_func_array($this->instance[$className], $param);
	}
}

$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
//外观模式
require './Container.php';
class Facade
{
	protected static $container = null;
	//把容器绑定到外观模式类中的属性
	public static function initialize(Container $container)
	{
		static::$container = $container;
	}
	//连接数据库
	public static function connect($localhost,$user,$pwd)
	{
		return static::$container->make('db')->connect($localhost,$user,$pwd);
	}
	//验证
	public static function check($user,$pwd)
	{
		return static::$container->make('validate')->check($user,$pwd);
	}
	//显示信息
	public static function display()
	{
		return static::$container->make('view')->display();
	}
}

Facade::initialize($container);

echo Facade::connect('localhost','root','root'),'<br>';
echo Facade::check('admin','123'),'<br>';
echo Facade::display();

QQ图片20181114103819.png

批改老师:天蓬老师批改时间:2019-01-27 08:54:57
老师总结:这个模式是ThinkPHP5.1 以及 laravel框架的基础, 如果掌握了, 对于框架底层的运行 就有了一定的理解了

发布手记

热门词条