官网 现在laravel的最新版已经升级到了9.0,目前公司还在用5.x版本,因此对于升级的注意事项做个记录,当做预防以后的踩坑
注意事项
- 同一个设置成支持php7.0,php8,新的9.0仅支持php8以上,为了能平滑迁移项目,需要服务器可支持2个版本
- 购物车插件gloudemans/shoppingcart 不可使用 , 测试 bumbummen99/shoppingcart 是否可替代
- 接收参数函数 Input::get() 废弃,用request()->get() 替代
- $input{$i+1} 花括号不可用 $input[$i+1]
- Route::controller 隐式控制路由废弃, 使用lesichkovm/laravel-advanced-route 插件 AdvancedRoute::controller 替代
- 队列在redis上保存的值有较大变动,
- laravel/vendor/laravel/framework/src/Illuminate/Queue/Queue.php createPayload函数 增加部分变量
- laravel/vendor/laravel/framework/src/Illuminate/Queue/RedisQueue.php createPayload函数 attempts设置默认为0
- 原生类的构造函数改成__construct
- 对于整形和字符串判断更严格了,如mktime 参数必须是int; abs("") 会报错
- 有用到的废弃函数 create_function 需要更换
- ORM查询返回的数据永远是obj类型, conf/database.inc.php 设置的$ORM->setFetchMode(PDO::FETCH_ASSOC); 无效,源自 https://laravel.com/docs/5.4/upgrade
以上的记录是我实际的项目产生的问题,因此不一定适合大部分人
正则表达式替换php7的语法警告
(\$[a-zA-Z\_]+)\[([a-zA-Z]+[a-zA-Z\_\d]*)\]
$1['$2']