摘要:db类class Db{ protected $content=null; public function __construct($config) { &
db类
class Db{
protected $content=null;
public function __construct($config)
{
$dns = $config['type'].':host='.$config['host'].';dbname='.$config['dbname'].';charset='.$config['charset'];
$pdo=new PDO($dns,$config['uname'],$config['pwd']);
$this->content = $pdo;
}
public function lanjie(){
echo '数据库连接成功';
}
}validate 类
class Validate{
public function vali(){
return '验证成功';
}
}view 类
class View{
public function jump(){
return '跳转到首页了';
}
}container类
require 'Db.php';
require 'Validate.php';
require 'View.php';
class Container{
//创建一个空数组来保存工具类及实现方法
protected $instance=[];
//将需要实例化的类与它的实现方法进行绑定;将对象容器实例化
public function bind($abstract,Closure $process){
$this->instance[$abstract]=$process;
}
//创建特定类的实例
public function make($abstract,$params=[]){
return call_user_func_array($this->instance[$abstract],$params);
}
}
$container = new Container();
////绑定db类
$config=['type'=>'mysql','host'=>'127.0.0.1','dbname'=>'test','charset'=>'utf8','uname'=>'root','pwd'=>'root'];
//绑定db
$container->bind('Db',function ()use($config){
return new Db($config);
});
//绑定验证类
$container->bind('Validate',function (){
return new Validate();
});
//绑定视图类
$container->bind('View',function (){
return new View();
});facde 类
require 'Container.php';
class Facde{
protected static $container =null;
public static function initialize(Container $container){
static::$container=$container;
}
//连接数据库
public static function content(){
return static::$container->make('Db',[])->lanjie();
}
//验证
public static function Validate(){
return static::$container->make('Validate')->vali();
}
//试图
public static function View(){
return static::$container->make('View')->jump();
}
}
echo "<h1>使用facde</h1>";
Facde::initialize($container);
echo Facde::content(),'<br>';
echo Facde::Validate(),'<br>';
echo Facde::View(),'<br>';效果图:

总结:先把单独的工具类放入 容器中,事先绑定。然后在 门脸类中用一个静态属性来保存容器类的实例 ,然后 使用一个初始化方法 依赖注入 容 器类, 门脸类中的 静态方法就是工具类的方法。这样就能引入 门脸类后直接静态调用了
批改老师:天蓬老师批改时间:2019-04-01 10:03:22
老师总结:所谓简化, 本质上将一些常用操作,封装到一个静态方法中调用