返回Faade的验......登陆

Faade的验证登入

puppy2019-06-14 12:06:37116
<?php 
/**
 * 外观模式:facade,也叫门面模式
 * 1.用一句来说:就是将操作进行封装,对外提供一个统一的接口
 * 2.因为操作可能分布在多个类中,而刚才学过的容器恰好可以将不同的类与实现封装起来
 * 3.所以外观模式与依赖容器是黄金搭档,经常会放在一起使用
 */

/**
 * 用户登录的操作涉及三个操作
 * 1.连接数据库
 * 2.用户数据验证
 * 3.输出提示信息
 */

require 'container.php';

//创建Facade类,实现以上三个功能
class Facade
{
	//连接数据库
	public static function connect(Container $container)
	{
		return $container->make('db')->connect();
	}

	//用户数据验证
	public static function check(Container $container)
	{
		return $container->make('validate')->check();
	}

	//输出提示信息
	public static function display(Container $container)
	{
		return $container->make('view')->display();
	}
}



//客户端调用
echo Facade::connect($container);
echo Facade::check($container);
echo Facade::display($container);


//可以在外观模型中使用初始化方法事先注入容器对象,来简化客户端调用

container代码

<?php 

//数据库操作类
class Db
{
	//数据库连接
	public function connect()
	{
		return '数据库连接成功<br>';
	}
}

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

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

/******************************************************************************/

//一.创建容器类
class Container
{
	//创建属性,用空数组初始化,该属性用来保存类与类的实例化方法
	public $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();
});


最新手记推荐

• 用composer安装thinkphp框架的步骤• 省市区接口说明• 用thinkphp,后台新增栏目• 管理员添加编辑删除• 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消回复发送
  • PHP中文网