用户登录验证

原创 2019-03-16 15:23:30 317
摘要:<?php //container  代码 class Db { public function connect() { return '数据库连接成功<br/>'; } } //数据验证类 class Validate { public function che
<?php
//container  代码
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 bind($class, Closure $new)//Closure $new定义一个闭包方法
	{
		$this->instane[$class]=$new;
		/*$this->instance['db']=function(){  //传入的方法就是如何实例化对象,
			return new db('localhost','root');
		}*/
	} 
	public function make($class,$params=[])//$params表示要传入的参数   对外调用
	{
		//call_user_func_array()回调一个函数,
		return call_user_func_array($this->instance[$class], []]);
	}
	
}
$container = new Container();
//将类绑定到容器中
$container->bind('db',function(){
	return new Db();
});
$container->bind('validate',function(){
	return new Validate();
});
$container->bind('view',function(){
	return new View();
});
//Facade代码
<?php
require 'container.php';

class Facade
{
	//保存容器对象
	protected static $container = null;
	//创建初始化方法,给容器对象赋值
	public static function initalize(Container $container)
	{
		static::$container = $container;//把对象保存起来
	}
	
	public static function connect()
	{
		return static::$container->make('db')->connect();
	}
	public static function check()
	{
		return static::$container->make('validate')->check();
	}
	public static function display()
	{
		return static::$container->make('view')->display();
	}
}
echo '<h3>优化后的门面统一调用</h3>';
Facade::initalize($container);//进行初始化
echo Facade::connect();
echo Facade::check();
echo Facade::display();


批改老师:查无此人批改时间:2019-03-18 09:14:53
老师总结:写的不错。门面模式的技巧,这个可以说说你的理解。老师才知道你学的怎么样。继续加油。

发布手记

热门词条