Laravel Carbon::setLastErrors()参数类型错误求助
解决Carbon::setLastErrors()类型错误:参数需array实际传入bool
问题详情
在Laravel项目中调用Carbon\Carbon::setLastErrors()时触发类型错误:参数#1 ($lastErrors)必须为array类型,实际传入bool类型。错误触发路径为C:\Users\tejassurve\Documents\code\jobhunt_project\vendor\nesbot\carbon\src\Carbon\Traits\Creator.php第98行,报错代码行:
self::setLastErrors(parent::getLastErrors());
原因
parent::getLastErrors()调用的是PHP原生DateTime::getLastErrors()方法,在无日期解析错误的场景下,该方法会返回false,但Carbon的setLastErrors()强制要求传入array类型,导致类型不匹配。
解决办法
- 升级Carbon到最新稳定版:新版本已修复该类型兼容问题,执行命令更新:
composer update nesbot/carbon - 临时应急修复(不建议修改vendor文件):若无法立即升级,可修改报错行代码,对返回值做类型兼容处理:
self::setLastErrors(is_array(parent::getLastErrors()) ? parent::getLastErrors() : []); - 核对PHP与Carbon版本兼容性:确保项目使用的PHP版本和Carbon版本匹配,避免因版本不兼容导致此类问题。
内容的提问来源于stack exchange,提问作者Tejas Surve
相关产品推荐
相关产品推荐

