创建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();