当前位置:首页>php>PHP 8.6 新功能一览,这几个改动挺有意思

PHP 8.6 新功能一览,这几个改动挺有意思

  • 2026-06-22 02:51:30
PHP 8.6 新功能一览,这几个改动挺有意思

PHP 8.6 的 RFC 投票已经有一段时间了。不过这次没有 PHP 8.5 那种大规模清理门户的阵仗,但每一条拿出来都挺实在,一方面是填补多年空白,另一方面是解决社区长期痛点。下面老王大概说个遍。

1. Debugable Enums:枚举终于能自定义 var_dump 了

PHP 8.1 引入枚举的时候,定了一条规矩:枚举不允许使用任何魔术方法。理由也说得通,大部分魔术方法设计来处理对象状态的,而枚举的 case 本质上是单例,没状态。

但 __debugInfo() 这个魔术方法其实不需要状态,它就是管 var_dump() 输出什么格式的。偏偏当时一刀切了,不让用。

这条 RFC(作者 Daniel Scherzer,投票 16 票赞成、2 票反对)把这个限制解除了。现在枚举可以写自己的 __debugInfo() 方法:

enumStatusstring{    case Active = 'active';    public function__debugInfo(): array    {        return [self::class . '::' . $this->name . ' = ' . $this->value];    }}var_dump(Status::Active);// enum(Status::Active) (1) { [0]=> string(19) "Status::Active = active" }

不改的话行为完全不变,想自定义输出格式的话现在可以了。后续社区还在讨论,看是不是要给枚举逐步开放更多魔术方法的支持。

2. Oniguruma 维护终止 + mbregex 函数废弃:三十年遗留终于说再见

这条是 PHP 8.6 里最硬核的一条,投票结果 24 票全票通过,反映了社区的强烈共识。

Oniguruma 是一个正则表达式库,PHP 一直在用它支撑 mb_ereg_* 这套多字节正则函数。2025年4月24日,Oniguruma 官方维护宣告结束,PHP 决定顺势把整个 mbregex 分支彻底下线。

具体计划是:PHP 8.6 里废弃这批函数,PHP 9.0 直接删掉。涉及整整18个函数:mb_ereg、mb_ereg_match、mb_ereg_replace、mb_ereg_search_*、mb_eregi、mb_eregi_replace、mb_regex_encoding、mb_regex_set_options、mb_split……全在里面。

废弃提示语长这样:

Deprecated: Function mb_ereg_replace() is deprecated since 8.6,Oniguruma functions support ends PHP 9.0

不过 PHP 留了后路。作者专门做了一个独立的扩展叫 mb_onig(发布在 Packagist 上),安装方式和普通 PHP 扩展一样:./configure --enable-mbstring --disable-mbregex 然后 pecl install mb_onig。这样依赖这套函数的代码在 PHP 8.x 和 9.x 里都能继续跑,只是需要手动装一下扩展。

这个改动对只用 UTF-8 的项目基本无感,但如果你的业务涉及到其他字符集(Shift-JIS、Big5、EUC-JP 之类的),升级前最好检查一下代码里有没有 mb_ereg 系列函数的调用。

3. enum SortDirection:排序方向终于有类型安全了

SortDirection 是 PHP 8.6 新增的一个全局枚举,两个 case:Ascending 和 Descending。投票 22:2,通过。

这个 RFC 的作者 在 RFC 文档里写了一段挺有共鸣的话:

PHP 的标准库至今没有任何类型安全的方式来表达排序方向。现在我们用 SORT_ASC / SORT_DESC 这种整型常量(只对 array_multisort 有效),或者 SCANDIR_SORT_ASCENDING(只对 scandir 有效),或者干脆裸字符串 ASC / DESC,或者 bool 型的 $ascending 参数,或者干脆两个分开的函数 sort() 和 rsort()。

实际上社区早就自发解决了这个问题,Doctrine 两年前就自己搞了个 Doctrine\Common\Collections\Order 枚举。SortDirection 这个 RFC 就是把这件事官方化,让所有框架和用户代码能统一在一个类型上。

enumSortDirection{    case Ascending;    case Descending;}// 用法$query->orderBy('created_at'SortDirection::Descending);

枚举是 unbacked 的(不带值的),因为排序方向不存在一个唯一的序列化标准,SQL 用 'DESC',URL 参数可能用 'desc',JSON 可能用 0/1,各自用 match() 转就行。这个设计很克制,但够用。

后续 PHP 标准库本身(scandir() 等函数)的参数也会逐步跟进支持这个枚举,不需要额外 RFC,只是个 widening 类型的过程。

4. DocComments For Function Parameters:参数文档终于可以写到参数旁边了

这个 RFC 加了一个很多人盼了很久的功能:ReflectionParameter::getDocComment()。

之前 PHP 函数的文档注释只能写在函数声明上面,@param 标注参数名称和类型。但问题是:参数的类型已经在参数列表里声明了一遍,文档又要在 DocComment 里再写一遍,两边容易不同步,特别是多人协作或者代码频繁改动的时候。现在可以把文档直接写在参数后面:

functionsearch(    /** 搜索关键词 */    string $query,    /** 最大返回条数,默认10 */    int $num 10) {}// 也可以写在类型前面functionsearch(    string $query /** 搜索关键词 */,    int $num 10 /** 最大返回条数,默认10 */) {}

两种写法都支持,和属性 DocComment 的风格保持一致。调用方式和已有反射 API 一致:

foreach((new ReflectionFunction('search'))->getParameters() as $p) {    echo $p->name . ": " . $p->getDocComment() . PHP_EOL;}

文档状态直接标记为"Implemented",上线时间就是 PHP 8.6。对 IDE 和静态分析工具来说这是个好消息,参数级别的文档现在可以在不读整个函数 DocComment 的情况下直接取到了。

5. Add Form Feed in Trim Functions:终于和 Python、JavaScript 一致了

trim() 函数的默认去除字符列表里,一直少了一个 \f(Form Feed,ASCII 12)。这条 RFC 把 \f 补进去了,投票 25:0,全票通过,属于那种早就该做了的小改动。

之前:

trim("\fHello World\f"); // "\fHello World\f" — 没变化

之后:

trim("\fHello World\f"); // "Hello World" — 正常去掉了

RFC 文档里详细说明了为什么应该加:POSIX 的 isspace() 把 \f 定义为空格字符,Python 的 str.strip() 默认去掉 \f,JavaScript 的 String.prototype.trim() 也去掉 \f,甚至 PHP 自己的 is_numeric() 解析字符串时也把 \f 当成空白字符处理,唯独 trim() 特殊。现在统一了。

这是 PHP 8.6 的一次小兼容性变化,文档明确标注为"backward incompatible"(但影响很小),已经在 commit 里落地了:https://github.com/php/php-src/commit/da1e89fd3db0b9d2017976d774270ee7ce3b35a7

6. grapheme_strrev:反转字符串,终于能正确处理 Emoji 了

strrev() 函数是 PHP 里祖传的函数,但它按字节反转,不按人类可读的方式处理多字节字符。想反转一个包含 Emoji 或中文的字符串,strrev() 基本会得到一堆乱码。

grapheme_strrev() 就是来解决这个问题的,它按字素簇(grapheme cluster)反转,跟 Swift 的 String.reversed() 行为一样。

// 反转希腊文+日文+家庭 emoji(5个人)echo grapheme_strrev("αあいうえお👨👨👧👦");// 输出:"👨👨👧👦おえういあα"// (每个 emoji 是一个完整的字素簇,不会被拆开)// 阿拉伯语也从右到左正确处理echo grapheme_strrev("مرحبا")// "بحرم"

这个函数加在 ext/intl 扩展里,投票 20:0,零反对。作为参考,亚洲和阿拉伯语用户对这类功能的需求是长期的,之前只能靠 mb_strrev 这种第三方实现,效果参差不齐。现在有了官方实现,IDE 提示、类型检查、文档都能一步到位。

7. Add "clamp()" function:数值边界限制,终于有原生函数了

clamp 这个函数在其他语言里早就有了,C++、Python、Java、C# 都有,CSS 也有 clamp()。现在 PHP 也补上了。

语法很简单:clamp($value, $min, $max)。如果 value 在 min 和 max 之间,就返回 value;如果比 max 大就返回 max;如果比 min 小就返回 min。

clamp(213);        // 2 — 在范围内,原样返回clamp(013);        // 1 — 小于最小值,返回 1clamp(613);        // 3 — 大于最大值,返回 3clamp("d""c""g");  // "d" — 字符串也支持clamp(new DateTime('2025-08-20'), new DateTime('2025-08-15'), new DateTime('2025-09-15'))->format('Y-m-d'); // "2025-08-20"

有几个细节需要注意:

(1)支持 int、float、string、DateTime 等多种可比较类型

(2)min > max 时抛出 ValueError(无效边界)

(3)min 或 max 传 NAN 也抛出 ValueError,但 value 是 NAN 时原样返

(4)接受命名参数,可以打乱顺序调用:clamp(min: 0, value: $angle, max: 90)

之前大家都是自己写:$clamped = min($max, max($min, $value))。RFC 文档里也测了性能,原生函数比 userland 实现还要快一点,而且自带边界验证和 NAN 处理,开发体验更干净。

8. isReadable/isWritable Reflection methods:终于能判断一个属性能不能读写

这条 RFC 加了两个新方法:ReflectionProperty::isReadable() 和 ReflectionProperty::isWritable()。作者 Ilija Tovilo 和 Larry Garfield,投票 27:0,零反对。

为什么要加这个?因为 PHP 8.1 引入了 readonly 属性,PHP 8.4 又引入了非对称可见性(public private(set))。现在一个属性是不是可以读或可以写,不再是简单看 isPublic() 就能判断的事了。

classBook{    public private(set) string $title = 'Default';    public readonly string $isbn;}$prop = new ReflectionProperty(Book::class, 'title');// 全局作用域能读吗?$prop->isReadable();          // true — public 的 get$prop->isWritable();          // false — private(set) 不让外部写// 指定某个类的作用域来判断$prop->isReadable(Book::class);$prop->isWritable(Book::class);

$scope 参数可以用 self::class 表示当前类,或者直接传类名字符串。$object 参数是可选的,如果不传,只看静态信息;如果传了,会额外检查对象实例层面的状态(比如 readonly 属性有没有被写过了)。

对做框架、做 ORM、做依赖注入容器的开发者来说,这两个方法是非常实用的工具。以前想判断一个属性能不能写,只能尝试读一下然后 catch 异常,现在有反射 API 可以在不触发副作用的情况下提前知道。

9. New function mysqli_quote_string:填了一个埋了二十年的坑

这条是安全相关的 RFC,作者 Kamil Tekiela,投票通过。

简单说:mysqli::real_escape_string 有一个已知的 SQL 注入漏洞,在某些 SQL_MODE 下可以被绕过。具体来说,当设置 SET SQL_MODE="NO_BACKSLASH_ESCAPES" 时,real_escape_string 的转义机制会失效,但调用方往往意识不到这一点,导致看似转义过的字符串实际上还包含危险字符。

新函数 mysqli::quote_string()(也有静态函数 mysqli_quote_string($mysqli, $string))直接参考了 PDO::quote() 的设计:自动转义、自动包裹单引号、始终用单引号(不提供双引号选项,因为双引号在标准 SQL 里不是字符串定界符)。

// 老写法(有隐患)$sql sprintf('SELECT id FROM foo WHERE name="%s"'$mysqli->real_escape_string($value));// 在 NO_BACKSLASH_ESCAPES 模式下,恶意输入仍可注入// 新写法(安全)$sql sprintf('SELECT id FROM foo WHERE name=%s'$mysqli->quote_string($value));// 自动转义并包裹单引号,注入失败

RFC 文档里明确提到:real_escape_string 理想情况下应该在后续版本废弃,但这条 RFC 本身不包含废弃步骤,留给社区后续讨论。这也是合理的,一次性把安全函数加进来,让用户迁移,废弃可以单独处理。

总结

这 9 条 RFC 放在一起看,PHP 8.6 不是一个大版本,但每条拿出来都是社区长期讨论的结果。有的是填补语言能力空白(SortDirection、clamp、grapheme_strrev),有的是清理历史遗留(mbregex、myqsli_quote_string 的注入问题),有的是提升开发者体验(参数 DocComment、属性反射方法),还有的是修复之前版本带来的复杂度(Debugable Enums)。

整体来看,PHP 8.6 延续了 8.x 以来的演进节奏。具体的发布日期按 PHP 的惯例应该是 2026 年年底左右,大概11月份,在此之前还有 Friends 和 Scope Functions 这两个讨论中的 RFC 值得关注,但它们最终落地哪个版本还不确定。

(关注这个公众号,一起来探索编程的意义吧)

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 19:31:14 HTTP/2.0 GET : https://f.mffb.com.cn/a/492947.html
  2. 运行时间 : 0.098946s [ 吞吐率:10.11req/s ] 内存消耗:5,022.43kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ae4ac61ae39292de1b60789c3f9db584
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001032s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001646s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002869s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000446s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000700s ]
  6. SELECT * FROM `set` [ RunTime:0.000210s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000549s ]
  8. SELECT * FROM `article` WHERE `id` = 492947 LIMIT 1 [ RunTime:0.000468s ]
  9. UPDATE `article` SET `lasttime` = 1783078274 WHERE `id` = 492947 [ RunTime:0.001922s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000233s ]
  11. SELECT * FROM `article` WHERE `id` < 492947 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000429s ]
  12. SELECT * FROM `article` WHERE `id` > 492947 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001590s ]
  13. SELECT * FROM `article` WHERE `id` < 492947 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001515s ]
  14. SELECT * FROM `article` WHERE `id` < 492947 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.009022s ]
  15. SELECT * FROM `article` WHERE `id` < 492947 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004759s ]
0.100463s