返回 模拟用户登陆验...... 登陆

模拟用户登陆验证的案例

JasonKim 2019-04-21 22:20:21 236
<?php
/**
 * 2019-04-21
 */

// 数据库操作类
class Db
{
    public function connect()
    {
        return '数据库连接成功';
    }
}

// 数据验证类
class Validate
{
    public function check()
    {
        return '数据验证成功';
    }
}

// 视图渲染类
class View
{
    public function display()
    {
        return '登陆成功';
    }
}


// 创建容器类
class Container
{
    // 创建容器
    public $instance = [];

    // 绑定  参数一:类名,参数二:实例化匿名函数,将对象容器初始化
    public function bind($abstract,Closure $course) {
        // 将工具类绑定到容器中
        $this->instance[$abstract] = $course;
        // 类似于:
        /*$this->instance['db'] = function (){
            return new Db();
        }*/
    }

    // 实现方法
    public function make($abstract,$params = [])
    {
        // 查询类中的方法
        return call_user_func_array($this->instance[$abstract],$params);
    }
}

// 注册容器
$container = new Container();
// 添加Db类到容器中
$container->bind('db',function(){
    return new Db();
});

// 添加验证类到容器中
$container->bind('validate',function(){
    return new Validate();
});

// 添加视图类到容器中
$container->bind('view',function(){
    return new View();
});


/*print_r($container->instance);
echo $container->make('db')->connect();*/


// 使用Facade 依赖注入  统一入口
class Facade
{
    // 定义静态属性,存放存放容器类
    protected static $instance = null;

    // 创建方法传入Container类
    public static function Container(Container $container)
    {
        return static::$instance = $container;
    }

    // 数据库连接方法
    public static function connect()
    {
        return static::$instance->make('db')->connect();
    }

    // 验证类
    public static function validate()
    {
        return static::$instance->make('validate')->check();
    }

    // 视图类
    public static function view()
    {
        return static::$instance->make('view')->display();
    }

}

// 使用Facade 实现Db,Validate,View,流程

// 将容器绑定到外观模式中
Facade::Container($container);
echo '<h2>使用Facade统一入口模式实现工具类中的三个方法</h2>';
echo Facade::connect(),'<br>';
echo Facade::validate(),'<br>';
echo Facade::view(),'<br>';


最新手记推荐

• 用composer安装thinkphp框架的步骤 • 省市区接口说明 • 用thinkphp,后台新增栏目 • 管理员添加编辑删除 • 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消 回复 发送
  • PHP中文网