摘要:<?php //工具类 class Db { public function connect($localhost,$user,$pwd) { return '主机是'.$localhost.',用户是'.$user.',密码是'.$pwd; } } class Validate {
<?php
//工具类
class Db
{
public function connect($localhost,$user,$pwd)
{
return '主机是'.$localhost.',用户是'.$user.',密码是'.$pwd;
}
}
class Validate
{
public function check($user,$pwd)
{
if($user=='admin' && $pwd=='123'){
return '验证通过';
}else{
return '验证失败';
}
}
}
class View
{
public function display()
{
return '恭喜,登录成功!';
}
}<?php
//容器类
require './Classes.php';
class Container
{
protected $instance = [];
public function bind($className,Closure $closure)
{
$this->instance[$className] = $closure;
}
public function make($className,$param=[])
{
return call_user_func_array($this->instance[$className], $param);
}
}
$container = new Container;
$container->bind('db',function(){
return new Db();
});
$container->bind('validate',function(){
return new Validate();
});
$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($localhost,$user,$pwd)
{
return static::$container->make('db')->connect($localhost,$user,$pwd);
}
//验证
public static function check($user,$pwd)
{
return static::$container->make('validate')->check($user,$pwd);
}
//显示信息
public static function display()
{
return static::$container->make('view')->display();
}
}
Facade::initialize($container);
echo Facade::connect('localhost','root','root'),'<br>';
echo Facade::check('admin','123'),'<br>';
echo Facade::display();
批改老师:天蓬老师批改时间:2019-01-27 08:54:57
老师总结:这个模式是ThinkPHP5.1 以及 laravel框架的基础, 如果掌握了, 对于框架底层的运行 就有了一定的理解了