摘要:<?php //数据库连接过程 class Db { public function connect() { return '连接数据库====》成功&
<?php
//数据库连接过程
class Db
{
public function connect()
{
return '连接数据库====》成功 !<br>';
}
}
//验证过程
class Validate
{
public function check()
{
return '验证通过====》成功 !<br>';
}
}
//登陆显示信息
class View
{
public function display()
{
return '登陆成功====》成功 !<br>';
}
}
//创建容器类
class Container
{
// 创建容器属性,用关联数组保存类或类实例化方法
public $instance=[];
// 对$instance[] 写入,绑定
public function bind($login,Closure $process)
{
$this->instance[$login]=$process;
}
// 对$instance[] 读取,实例化对应的关联数组中的类名
public function make($login,$params=[])
{
return call_user_func_array($this->instance[$login],[]);
}
}
//实例化容器后对容器绑定外部类
$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
/**
* Created by PhpStorm.
* User: 普通用户
* Date: 2019/6/23
* Time: 17:44
*/
require 'facade.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类
Facade::initialize($container);
//访问facade类
echo Facade::connect();
echo Facade::check();
echo Facade::display();
本章节对之前的依赖注入知识又重新重温一遍,可见依赖注入在开发中比较重要,经过学习对高度藕合的问题在后续开发中尽量避免,另外运用facade类实现不需要对基类实例化后再访问而方便的使用静态直接访问
批改老师:天蓬老师批改时间:2019-06-24 10:07:55
老师总结:这类门面代码与容器模型是紧密结合在一起的, 一定要结合 起来理解和学习
