Better late than never.

将博客从 laravel5.4 升级到 laravel9.2

前言

上周末将博客从Laravel5.4 "升级" 到 Laravel9.2, 运行了差不多一周,目前也没发现什么问题,特此写篇博客记录下,毕竟看了上篇博客发布的时间已经是5个月前了。。。。。

关于博客

博客一直使用的是github上一位老哥基于Laravel5开发一个 开源博客,不过自己使用的是该博客比较旧的一个版本了,一直没有更新,里面也参夹了自己不少"不够优雅"的代码。前不久发现learnku社区Laravel9的文档已经翻译完成,就终于决定"升级"一下博客了。顺便体验一下PHP8。

"升级"

这个升级我也把它当成是简单的重构了,因为并没有在原Laravel5.4的框架上升级,而是拉了一个Laravel9.2的框架再将原框架的代码逐步移到新框架上。回想了下升级过程中大致遇到的问题:

balde模板

{{ $var or "var" }} // 在Laravel9.2中 变量 $var 存在的会被直接解析成 "1"
// 改写成:
{{ $var ?? "var" }}

辅助函数

// 以下函数在Laravel9中无法使用,直接在Laravel5.4中找到源码复制到Laravel9中即可
elixir()
str_limit()
starts_with()
array_has()
......

用户认证

// Laravel5.4中的用户认证模块没了,安装composer扩展包"laravel/ui"可解决
composer require "laravel/ui"

mysql 导出/导入 emoji 问题

env 配置

// 自己这里只涉及到了邮箱配置的一个变更
MAIL_FROM_ADDRESS 该配置与 MAIL_USERNAME 保持一致即可

composer 包

许多composer包还不支持php8 or laravel9,根据自身需要升级对应的包
guzzlehttp/guzzle 6.0 upgrade guzzlehttp/guzzle 7.2

UploadedFile

UploadedFile类获取文件大小方法变更
$UploadedFile->getClientSize() => $UploadedFile->getSize()

分页问题

laravel9 默认没有使用Bootstrap的样式,导致原版本中使用的分页都没有样式
解决:
在 app\Providers\AppServiceProvider.php 中的 boot() 方法添加
Paginator::useBootstrap();

前端打包 暂时放弃了 ,直接重写css js

End

没有一套标准的文档式升级方案,大家使用的laravel项目版本跟要升级的版本都各有异同,这里只是对自己升级时遇到的问题做个记录。

-- END

写的不错,赞助一下主机费

扫一扫,用支付宝赞赏
扫一扫,用微信赞赏
2022-04-01 13:42

感谢分享 赞一个