You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP Notice问题排查:count()是否为报错元凶?

问题排查:PHP Notice报错分析

报错信息

PHP Notice: Object of class MyCourse could not be converted to int in /home/usr/public_html/wp-includes/post-template.php on line 310

post-template.php 第310行代码

if ( $elements['page'] > count( $elements['pages'] ) ) { // 如果请求的页面不存在
    $elements['page'] = count( $elements['pages'] ); // 返回存在的最大编号页面
}

register_shortcodes() 中的类调用代码

if ( $has_course ) { // 如果需要随课程渲染测验
    $entity = new MyCourse( array( 'id' => $post->post_parent ) );
    $presenter = $entity->get_presenter();
}

问题场景

在旧代码库中排查H5P短代码时触发该报错。

技术疑问

是否是count()函数导致了这个PHP Notice报错?


分析与结论

不是count()直接引发的报错。问题的核心是$elements['pages']被错误赋值为MyCourse类的实例对象,而非预期的数组或可计数类型。

当count()接收未实现Countable接口的对象时,PHP会尝试将其转换为整数以完成计数操作,但MyCourse类不支持这种类型转换,因此触发了“无法将对象转换为整数”的Notice。

结合代码片段推测,H5P短代码的处理流程中存在逻辑错误,导致MyCourse实例被赋值给了$elements['pages']。需要检查该变量的赋值链路,确保它被设置为正确的页面数组类型,而非MyCourse对象。

内容的提问来源于stack exchange,提问作者Marine Valentonis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:40:25