一、门面
1.将一个类绑定到容器中:
public function index(Request $request)
{
Container::set('indexRepository','app\index\Repository\IndexReposiroty');//indexRepository作为绑定Indexpository类实例的别名
$temp=Container::get('indexRepository'); //获取IndexReposiroty实例,tp5.1底层会根据该类名的位置生成一个实例。
$result=$temp->demo1();
dump($result);
}
也可以传进去一个闭包,也可以是实例:
Container::set('closeTest',function ($name){
return "闭包测试".$name;
});
$temp=Container::get('closeTest',['传进变量']);
使用实例化助手:
//使用实例化助手
bind('indexRepository','app\index\Repository\IndexReposiroty');
$temp=app('indexRepository');
2.门面(其实就是一个静态代理),就像index.php入口文件先调用base.php文件,其实就是将类都放到容器里面,统一管理,方便调用,再生成静态代理。
1.设置静态代理类,查看\think\facade命名空间下的文件,随便创建一个门面类再模仿该空间下的一个类,例如Request
namespace app\index\facade;
use think\Facade;
class demo1 extends Facade
{
protected static function getFacadeClass()
{
return 'app\index\Repository\IndexReposiroty';//代理这个类
}
}
2.这时候就可以再其他类中调用该门面类了,就可以调用IndexReposiroty类下的demo1方法。
$result=\app\index\facade\demo1::demo1();