Thinkphp笔记(架构) taro Posted on Mar 22 2021 PHP 开发 # 安装 composer 安装 ```bash composer create-project topthink/think=5.1.* tp5 ``` # 模块 ## 新建模块 ```bash php think build --module module_name ``` ## 访问模块 ### 未配置路由重写 ``` http://serverName/index.php/模块/控制器/操作/[参数名/参数值...] ``` # Facade 可令一个类的方法无需实例化直接调用,我的理解就是可以所有继承自他的类的方法都可以当做类方法直接调用 定义了一个`app\common\Test`类,里面有一个`hello`动态方法 ```php <?php namespace app\common; class Test { public function hello($name) { return 'hello,' . $name; } } ``` 接下来,我们给这个类定义一个静态代理类`app\facade\Test` ```php <?php namespace app\facade; use think\Facade; class Test extends Facade { protected static function getFacadeClass() { return 'app\common\Test'; } } ``` 调用 ```php echo \app\facade\Test::hello('thinkphp'); ``` 也可以动态绑定 ```php <?php namespace app\facade; use think\Facade; class Test extends Facade { } ``` ```php use app\facade\Test; use think\Facade; Facade::bind('app\facade\Test', 'app\common\Test'); echo Test::hello('thinkphp'); ``` # 钩子和行为 没看懂...回头看看代码在补一下 # 中间件 >中间件主要用于拦截或过滤应用的`HTTP`请求,并进行必要的业务处理。 可以通过命令行指令快速生成中间件 ```bash php think make:middleware Check ``` 这个指令会 `application/http/middleware`目录下面生成一个`Check`中间件。 ```php <?php namespace app\http\middleware; class Check { public function handle($request, \Closure $next) { if ($request->param('name') == 'think') { return redirect('index/think'); } //前置行为 return $next($request); //后置行为 //return $response; } } ``` 入口方法为`handle`返回值为`Response`对象 注册中间件 ```php Route::rule('hello/:name','hello') ->middleware('Auth'); Route::rule('hello/:name','hello') ->middleware(app\http\middleware\Auth::class); Route::rule('hello/:name','hello') ->middleware(['Auth', 'Check']); ``` 1 Linux 开发学习 (一) Thinkphp笔记