返回 完成用户登录验...... 登陆

完成用户登录验证过程类,用到依赖注入和facade

҈果҈果҈果҈ ҈ ҈ 2019-06-23 23:14:01 188
<?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();

2019-06-23_182513.jpg


本章节对之前的依赖注入知识又重新重温一遍,可见依赖注入在开发中比较重要,经过学习对高度藕合的问题在后续开发中尽量避免,另外运用facade类实现不需要对基类实例化后再访问而方便的使用静态直接访问

最新手记推荐

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

全部回复(0)我要回复

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