摘要:<?php /** * 外观模式:facade,也叫门面模式 * 1.用一句来说:就是将操作进行封装,对外提供一个统一的接口 * 2.因为操作可能分布在多个类中,而刚才学过的容器恰好可以将不同的类与实现封装起来 * 3.所以外观模式与依赖容器是黄金搭档,经常会放在一起使用 */
<?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();
});
批改老师:查无此人批改时间:2019-06-14 14:21:46
老师总结:完成的不错。基础上php已经入门了,以后多练习实战项目。继续加油。