abstrait:創(chuàng)建container.php文件注入容器對象<?phpnamespace app\index\controller;use think\Validate;// 創(chuàng)建數(shù)據(jù)庫連接類class Db{ public function connect() { $db=mysqli_connect('localhost',
創(chuàng)建container.php文件注入容器對象
<?php
namespace app\index\controller;
use think\Validate;
// 創(chuàng)建數(shù)據(jù)庫連接類
class Db
{
public function connect()
{
$db=mysqli_connect('localhost','root','root');
if(!$db){
die('連接失敗:'.mysql_error());
}
return '數(shù)據(jù)庫連接成功!,<br>';
}
}
//創(chuàng)建數(shù)據(jù)驗證類驗證
class Validate
{
public function check()
{
$name=['name'=>'require|length:3,12',
'password'=>'require|length:6,18'];
$verification=[
'name.require'=>'用戶名不能為空',
'name.between'=>'用戶名必須在3到12個數(shù)字之間',
'password.require'=>'用戶名不能為空',
'password.between'=>'用戶名必須在3到12個數(shù)字之間'
];
$a=['name'=>name,
'password'=>123456];
$b=validate::make($name,$verification);
$c=$b->check($a);
return $c ? '數(shù)據(jù)驗證成功!<br>': $b->getError();
}
}
// 創(chuàng)建視圖類
class View
{
public function display()
{
return '用戶登錄成功!';
}
}
// 創(chuàng)建容器類
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()函數(shù)導入container.php文件
require 'container.php';
class Facade
{
//創(chuàng)建成員屬性到容器對象
protected static $container=null;
//創(chuàng)建初始化方法為容器對象賦值
public static function initialize(Container $container)
{
static::$container=$container;
}
//調(diào)用連接數(shù)據(jù)庫類
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();
}
}
//客戶端調(diào)用
Facade::initialize($container);
echo Facade::connect();
echo Facade::check();
echo Facade::display();
Professeur correcteur:天蓬老師Temps de correction:2019-04-22 13:54:29
Résumé du professeur:將教學代碼直接貼上來了, 真得懂了嗎?