facade php,tp5中的Facade技术理解

//容器类

//数据库操作类

class Db

{

//数据库连接

public function connect()

{

return '数据库连接成功
';

}

}

//数据验证类

class Validate

{

//数据验证

public function check()

{

return '数据验证成功
';

}

}

//视图图

class View

{

//内容输出

public function display()

{

return '用户登录成功';

}

}

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

//一.创建容器类

class Container

{

//创建属性,用空数组初始化,该属性用来保存类与类的实例化方法

public $instance = [];

//初始化实例数组,将需要实例化的类,与实例化的闭包方法'Closure $process'进行绑定

public function bind($abstract, Closure $process)

{

//键名为类名,值为实例化的方法

$this->instance[$abstract] = $process;

}

//创建类实例,返回一个类的实例

public function make($abstract, $params=[])

{        //这里的$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();

});

//Facade类

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值