thinkphp6框架facede门面的定义和使用方法示例

thinkphp6框架facede门面的定义和使用方法示例

门面(Facade)

门面为容器中的(动态)类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个facade类。
静态方式调用非静态方法时隐式的实例化了该类,无需我们做额外的实例化工作

系统已经为大部分核心类库定义了Facade,所以你可以通过Facade来访问这些系统类,当然也可以为你的应用类库添加静态代理。

下面是一个示例,假如我们定义了一个app\common\Test类,里面有一个hello动态方法。

在这里插入图片描述

<?php

namespace app\common;

class Test
{
    public function hello($name)
    {
        return 'hello,' . $name;
    }
}


在index控制器中调用hello方法的代码应该类似于:

    public function hello($name = 'ThinkPHP6')
    {
      $test = new \app\common\Test;
      echo $test->hello('qipa250'); // 输出 hello,qipa250
    }

在这里插入图片描述

接下来,我们给这个类定义一个静态代理类app\facade\Test(这个类名不一定要和Test类一致,但通常为了便于管理,建议保持名称统一)。

在这里插入图片描述

<?php
namespace app\facade;

use think\Facade;

class Test extends Facade
{
    protected static function getFacadeClass()
    {
        return 'app\common\Test';
    }
}


只要这个类库继承think\Facade,就可以使用静态方式调用动态类app\common\Test的动态方法,例如上面的代码就可以改成:

    public function hello($name = 'ThinkPHP6')
    {

  /*      $test = new \app\common\Test;
        echo $test->hello('qipa250'); // 输出 hello,thinkphp*/

        echo \app\facade\Test::hello('qipa250');
    }

输出结果也与之前的一致
在这里插入图片描述
说的直白一点,Facade功能可以让类无需实例化而直接进行静态方式调用。

核心Facade类库

系统给内置的常用类库定义了Facade类库,包括:
(动态)类库 Facade类
think\App think\facade\App
think\Cache think\facade\Cache
think\Config think\facade\Config
think\Cookie think\facade\Cookie
think\Db think\facade\Db
think\Env think\facade\Env
think\Event think\facade\Event
think\Lang think\facade\Lang
think\Log think\facade\Log
think\Middleware think\facade\Middleware
think\Request think\facade\Request
think\Response think\facade\Response
think\Route think\facade\Route
think\Session think\facade\Session
think\Validate think\facade\Validate
think\View think\facade\View

所以你无需进行实例化就可以很方便的进行方法调用,例如:


use think\facade\Cache;

    public function hello($name = 'ThinkPHP6')
    {

        Cache::set('name', 'qipa250');
        echo Cache::get('name');
    }

在这里插入图片描述
我们验证一下调用的是否为cache类中的方法,找到tp6/vendor/topthink/framework/src/think下的 Cache.php文件

在这里插入图片描述
修改构造方法

    public function __construct(array $config = [])
    {
        echo 'hi cache ';
        $this->config = $config;
    }

在浏览器中访问

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值