facade使用

原创 2018-12-24 11:28:37 266
摘要:容器<?php  //数据库操作类 class Db { //数据库连接 public function connect() { return '数据库连接成功<br>'; } } //数据验证类 class Validate { //数据验证 public function

容器

<?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();
});

调用

<?php 
require 'container.php';

class Facade
{
    //创建成员属性保存容器对象
    protected static $container = null;

    //创建初始化方法为容器对象赋值
    public static function initialize(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();
    }
}



//客户端调用

//初始化类门面类中的容器对象
Facade::initialize($container);

//静态统一调用内部的方法
echo Facade::connect();
echo Facade::check();
echo Facade::display();

facade(外观模式)和容器依赖

批改老师:韦小宝批改时间:2018-12-24 11:54:45
老师总结:写的很不错!课后要记得多练习才可以哦!继续加油吧!

发布手记

热门词条