类似用户登录的案例

Original 2019-06-10 08:58:20 263
abstract:<?php//容器:也叫服务容器(Ioc)//基本思想 拿来就用,最大限度简化外部调用,类似于即插即用//创建容器:本质就是将一个类与它的实现绑定到一个关联的数组;//服务注册:初始化这个关联数组,将工具类绑定到容器中;//容器依赖:也叫依赖容器,调用的时候直接传一个容易对象即可,不用再一个一个传具体对象;//数据库操作类class Db{ //数据库连接 public

<?php
//容器:也叫服务容器(Ioc)
//基本思想 拿来就用,最大限度简化外部调用,类似于即插即用
//创建容器:本质就是将一个类与它的实现绑定到一个关联的数组;
//服务注册:初始化这个关联数组,将工具类绑定到容器中;
//容器依赖:也叫依赖容器,调用的时候直接传一个容易对象即可,不用再一个一个传具体对象;

//数据库操作类
class Db
{
 //数据库连接
 public function connect()
 {
  return '数据库连接成功<br/>';
 }
}
//数据库验证
class Validate
{
 //数据验证
 public function check()
 {
  return '数据验证成功<br/>';
 }
}
//视图类
class View
{
 //内容输出
 public function display()
 {
  return '用户登录成功';
 }
}

/*********************************/
//创建容器类
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],[]);
    }
}
/*********************************/
//服务注册:其实就是调用容器的bind()将对象注册到容器中
$container = new Container();

//将Db类绑定到容器中
$container->bind('db',function(){
 return new Db();
});
//将Validata类绑定到容器中
$container->bind('validate',function(){
 return new Validate();
});
//将View类绑定到容器中
$container->bind('view',function(){
 return new View();
});




<?php
//在外观模式facade中,创建一个初始化方法事先注入容器,来简化代码
require 'demo.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();
 }
}

//客户端调用
echo '<h3>简化后facade调用:</h3>';
Facade::initialize($container);
echo Facade::connect();
echo Facade::check();
echo Facade::display();


Correcting teacher:查无此人Correction time:2019-06-10 09:07:52
Teacher's summary:完成的不错。编程有很多设计模式,多了解,对以后工作帮助很大。继续加油。

Release Notes

Popular Entries