使用mobiledetect库调用isTablet()方法出现致命错误求助
报错原因
Call to undefined method Mobile_Detect::isTablet()(调用未定义的方法Mobile_Detect::isTablet())这个报错和配置遗漏没有关系,纯粹是当前使用的Mobile Detect库版本太低。
2.x及更早的老版本里,根本没有把isTablet()做成对外可调用的公有方法,只是内部维护了平板设备的匹配规则,只开放了isMobile()这类基础方法,所以写的isMobile()判断能正常运行,调用isTablet()就会直接抛出致命错误。
解决方法
根据自己的项目情况选一种处理即可:
- 推荐方案:把库升级到3.x及以上正式版本
新版本已经把平板检测封装成了标准的公有方法,升级完成后可以直接调用isTablet(),不需要额外写兼容逻辑,参考代码:$detect = new Mobile_Detect; // 判断平板设备 if ($detect->isTablet()) { // 平板端对应业务逻辑 } // 判断非平板的手机设备 if ($detect->isMobile() && !$detect->isTablet()) { // 手机端对应业务逻辑 } - 临时兼容方案:不升级版本,用内置规则实现平板检测
老版本内部已经维护了全量平板设备的匹配规则,直接调用通用检测方法is()传入Tablet标识就能实现同等检测效果,参考代码:$detect = new Mobile_Detect; // 老版本兼容平板判断 if ($detect->is('Tablet')) { // 平板端对应业务逻辑 }
提醒:这个问题不需要修改任何框架或库的配置项,不存在漏配的情况,仅需要处理版本兼容即可。
内容的提问来源于stack exchange,提问作者Horhe Garcia
相关产品推荐
相关产品推荐

