依赖注入和Facade门面技术简易的实现用户登录验证过程

Original 2019-04-22 12:13:01 202
abstract:创建container.php文件注入容器对象<?phpnamespace app\index\controller;use think\Validate;// 创建数据库连接类class Db{ public function connect() {        $db=mysqli_connect('localhost',

创建container.php文件注入容器对象


<?php

namespace app\index\controller;


use think\Validate;

// 创建数据库连接类

class Db

{


public function connect()

{

        $db=mysqli_connect('localhost','root','root');

        if(!$db){

die('连接失败:'.mysql_error());

}

return '数据库连接成功!,<br>';

}

}


//创建数据验证类验证

class Validate

{

public function check()

{

$name=['name'=>'require|length:3,12',

               'password'=>'require|length:6,18'];

        $verification=[

            'name.require'=>'用户名不能为空',

            'name.between'=>'用户名必须在3到12个数字之间',

            'password.require'=>'用户名不能为空',

            'password.between'=>'用户名必须在3到12个数字之间'

           ];  

        

        $a=['name'=>name,

            'password'=>123456];

        

        $b=validate::make($name,$verification);

        

        $c=$b->check($a);

        

        return $c ? '数据验证成功!<br>': $b->getError();

}

}


// 创建视图类

class View

{

public function display()

{

return '用户登录成功!';

}

}


// 创建容器类

class Container

{

public $instance = [];


public function bind($abstract,Closure $process)

{

$this->instance[$abstract]=$process;

}


public function make($abstract,$params=[])

{

return call_user_func_array($this->instance[$abstract],[]);

}

}



//将类的实例绑定到容器中

$container = new Container();


$container->bind('db',function(){return new Db();});


$container->bind('validate',function(){return new Validate();});


$container->bind('view',function(){return new View();});

---------------------------------分割线----------------------------------------

在task.php文件中导入container.php文件

<?php

//用require()函数导入container.php文件

require 'container.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::initialize($container);

echo Facade::connect();

echo Facade::check();

echo Facade::display();


Correcting teacher:天蓬老师Correction time:2019-04-22 13:54:29
Teacher's summary:将教学代码直接贴上来了, 真得懂了吗?

Release Notes

Popular Entries