thinkphp 6 要点笔记:多应用模式、中间件

2022-07-0207:33:07后端程序开发Comments1,289 views字数 1535阅读模式

开启调试模式

根目录的.example..env改为.env文件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

Facade 使类无需实例化而直接进行静态方式调用

参考
注意事项, 此时的facade 无法被 IDE 识别,可通过注释方法识别文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

/**
 * @method string hello(string $name)  static 读取缓存并删除
 */
class Test extends Facade{

就可以识别函数
若想静态调用系统函数,使用think\facade\xxx 的命名空间文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

多应用模式

├─app 应用目录
│  ├─index              主应用
│  │  ├─controller      控制器目录
│  │  ├─config          配置目录(优先)
│  │  └─ ...            更多类库目录
│  ├─admin               后台应用
│  │  ├─controller      控制器目录
│  │  ├─config          配置目录(优先)
│  │  └─ ...            更多类库目录
│
├─public                WEB目录(对外访问目录)
│  ├─admin.php          后台入口文件
│  ├─index.php          入口文件
│
├─config                应用配置目录
│  ├─index              index应用配置
│  └─admin              admin应用配置
│
├─route                 路由定义目录
│  ├─index              index应用路由定义目录
│  └─admin              admin应用路由定义目录
│
├─runtime               运行时目录
│  ├─index              index应用运行时目录
│  └─admin              admin应用运行时目录

开启多应用
config/app.php文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

'auto_multi_app'    =>    true,
 'default_app'           => 'index',
  //指定默认模块

自动生成应用

build.php文件放到app目录下执行
php think build 应用名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

中间件

  1. 生成中间件
    php think make:middleware Check

2.设置中间件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

class InAppCheck
{
    public function handle($request, \Closure $next)
    {
        if (preg_match('~micromessenger~i', $request->header('user-agent'))) {
            $request->InApp = 'WeChat';
        } else if (preg_match('~alipay~i', $request->header('user-agent'))) {
            $request->InApp = 'Alipay';
        }
        return $next($request);
    }
}

3.应用中间件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

//在对应的 middleware.php

return [
    app\middleware\InAppCheck::class,
];

或者路由中间件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

Route::rule('hello/:name','hello')
	->middleware([\app\middleware\Auth::class]);

路由

变量规则

自定义默认的规则
'default_route_pattern' => '[\w\-]+',
局部变量文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

Route::get('new/:name', 'News/read')
    ->pattern(['name' => '[\w|\-]+']);

全局变量规则文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

Route::pattern([
    'name' => '\w+',
    'id'   => '\d+',
]);

验证器的推荐用法

使用显示路径形式说明,方便IDE追踪文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html

try{
    $data = $this->request->post();
    validate(\app\api\validate\ChildrenValidate::class)
        ->scene("binding")
        ->check($data);
        // todo...
}catch(ValidateException|CustomException $e){
	$this->error($e->getError());
}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/24650.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/24650.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定