博客列表 >thinkPHP Model搜索器、门面类、开启调试、助手函数、多应用

thinkPHP Model搜索器、门面类、开启调试、助手函数、多应用

吴长清
吴长清原创
2022年09月01日 10:20:38654浏览

1.model搜索器

  1. // 条件搜索
  2. // withSearch() 触发搜索器 传入两个数组
  3. // 参数1:需要搜索的字段 参数2:关联数组,键为字段,值为查询条件的值
  4. public function whereSearch()
  5. {
  6. User::withSearch(['name', 'status'], [
  7. 'name' => '于',
  8. 'status' => '1'
  9. ])->select();
  10. }
  11. // 搜索器 三个参数
  12. // 使用withSearch()时触发
  13. // $query: sql语句对象
  14. // $value: 使用withSearch()触发时,关联数组的当前值 '于'
  15. // $data: 使用withSearch()触发时,关联数组的所有值 ['于','1']
  16. public function searchNameAttr($query, $value, $data)
  17. {
  18. dump($query);
  19. dump($value);
  20. dump($data);
  21. $ret = $query->where('name', 'like', $value . '%');
  22. dump($ret);
  23. }
  24. // 搜索器
  25. public function searchStatusAttr($query, $value, $data)
  26. {
  27. $query->where('status', '=', $value);
  28. }

2.门面类

  • 普通(动态)类,引入后需要以参数方式依赖注入到方法中才可以使用
  1. <?php
  2. namespace app\controller;
  3. use app\BaseController;
  4. // 引入普通(动态)类
  5. use think\Db;
  6. use think\Request;
  7. class tp0831 extends BaseController
  8. {
  9. // 在方法中通过参数方式依赖注入
  10. public function tp0831(Db $db, Request $request)
  11. {
  12. // 参数方式调用
  13. $db->table()->slect();
  14. $request->method();
  15. }
  16. }
  • 门面(facade)类,引用后直接用静态类的方式使用(推荐使用)
  1. <?php
  2. namespace app\controller;
  3. use app\BaseController;
  4. // 引入门面类
  5. use think\facade\Db;
  6. use think\facade\Request;
  7. class tp0831 extends BaseController
  8. {
  9. public function tp0831(){
  10. // 门面类直接以静态的方式使用
  11. Db::table()->slect();
  12. Request::method();
  13. }
  14. }

thinkphp 动态类和门面类的引入 如下:

3.开启调试

ThinkPHP提供了一些内置的调试工具和函数

  • Trace调试功能就是ThinkPHP提供给开发人员的一个用于开发调试的辅助工具。可以实时显示当前页面或者请求的请求信息、运行情况、SQL执行、错误信息和调试信息等,并支持自定义显示,并且支持没有页面输出的操作调试。在创建tp项目时已经内置安装,不需要手动安装

  • 如果部署到服务器的话,你可以通过下面方式安装
    composer install --no-dev

  • 当项目部署到服务器正式运行时,不建议使用,因为用户不希望看见调试信息

  • 开启Trace调试功能

    • 在项目内找到xxx.env文件 删除.env的前缀
    • .env 中找到APP_DEBUG配置项,并将其设置为true
    • 开启后还需要配置其他项,比如数据库连接方式等
    • 如下:

  • 开启Trace调试功能后,页面右下角会有一个logo,点开后即可看见调试信息

  • 配合dump()调试函数使用

    • 最终页面输出如下

4.助手函数

系统为一些常用的操作方法封装了助手函数,便于使用,包含如下:

序号 助手函数 描述
1 abort 中断执行并发送HTTP状态码
2 app 快速获取容器中的实例 支持依赖注入
3 bind 快速绑定对象实例
4 cache 缓存管理
5 class_basename 获取类名(不包含命名空间)
6 class_uses_recursive 获取一个类里所有用到的trait
7 config 获取和设置配置参数
8 cookie Cookie管理
9 download 获取\think\response\File对象实例
11 dump 浏览器友好的变量输出
12 env 获取环境变量
13 event 触发事件
14 halt 变量调试输出并中断执行
15 input 获取输入数据 支持默认值和过滤
16 invoke 调用反射执行callable 支持依赖注入
17 json JSON数据输出
18 jsonp JSONP数据输出
19 lang 获取语言变量值
20 parse_name 字符串命名风格转换
21 redirect 重定向输出
22 request 获取当前Request对象
23 response 实例化Response对象
24 session Session管理
25 token 生成表单令牌输出
26 trace 记录日志信息
27 trait_uses_recursive 获取一个trait里所有引用到的trait
28 url Url生成
29 validate 实例化验证器
30 view 渲染模板输出
31 display 渲染内容输出
32 xml XML数据输出
33 app_path 当前应用目录
34 base_path 应用基础目录
35 config_path 应用配置目录
36 public_path 应用根目录
37 root_path 中断执行并发送HTTP状态码
38 runtime_path 应用运行时目录

可以在应用的公共函数文件中重写上面这些助手函数。

5.多应用

  • 需要使用composer require topthink/think-multi-app来安装多应用模块

  • 在app目录下创建应用

  • 完整目录解构 如下

  1. www WEB部署目录(或者子目录)
  2. ├─app 应用目录
  3. ├─index 项目1
  4. ├─controller 控制器目录
  5. ├─model 模型目录
  6. ├─view 视图目录
  7. ├─admin 项目2
  8. ├─controller 控制器目录
  9. ├─model 模型目录
  10. ├─view 视图目录
  11. ├─ ... 更多类库目录
  12. ├─BaseController.php 默认基础控制器类
  13. ├─ExceptionHandle.php 应用异常定义文件
  14. ├─common.php 全局公共函数文件
  15. ├─middleware.php 全局中间件定义文件
  16. ├─provider.php 服务提供定义文件
  17. ├─Request.php 应用请求对象
  18. └─event.php 全局事件定义文件
  19. ├─config 配置目录
  20. ├─app.php 应用配置
  21. ├─cache.php 缓存配置
  22. ├─console.php 控制台配置
  23. ├─cookie.php Cookie配置
  24. ├─database.php 数据库配置
  25. ├─filesystem.php 文件磁盘配置
  26. ├─lang.php 多语言配置
  27. ├─log.php 日志配置
  28. ├─middleware.php 中间件配置
  29. ├─route.php URL和路由配置
  30. ├─session.php Session配置
  31. ├─trace.php Trace配置
  32. └─view.php 视图配置
  33. ├─view 视图目录
  34. ├─route 路由定义目录
  35. ├─route.php 路由定义文件
  36. └─ ...
  37. ├─public WEB目录(对外访问目录)
  38. ├─index.php 入口文件
  39. ├─router.php 快速测试文件
  40. └─.htaccess 用于apache的重写
  41. ├─extend 扩展类库目录
  42. ├─runtime 应用的运行时目录(可写,可定制)
  43. ├─vendor Composer类库目录
  44. ├─.example.env 环境变量示例文件
  45. ├─composer.json composer 定义文件
  46. ├─LICENSE.txt 授权说明文件
  47. ├─README.md README 文件
  48. └─think 命令行入口文件
  • 在index应用下controller目录下创建index.php文件并在其中创建index方法
  1. <?php
  2. namespace app\index\controller;
  3. use app\BaseController;
  4. class Index extends BaseController
  5. {
  6. public function index()
  7. {
  8. echo '前台应用';
  9. }
  10. }
  • 在admin应用下controller目录下创建admin.php文件并在其中创建admin方法
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. class Admin extends BaseController
  5. {
  6. public function admin()
  7. {
  8. echo '后台应用';
  9. }
  10. }
  • 最终输出前后台两个应用

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议