First, let's 升级PHP至少 7.2.5 下面给出的命令适用于 7.4
sudo apt-get update
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt -y install php7.4
sudo apt-get install -y php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip,xml,curl,json}
php -v
sudo update-alternatives --set php /usr/bin/php7.4
sudo a2enmod php7.4
sudo systemctl restart apache2
如需验证,请检查 {url}/phpinfo.php
Second, 消除作曲家.lock文件 &vendor folder rm -R vendor
.
Run composer install
.
Third,这就是一切都走向地狱的地方!升级后代码变化
1)has方法
即使输入值为空字符串或 null,$request->has 方法现在也会返回 true。添加了新的 $request->filled 方法,该方法提供了 has 方法的先前行为。
e.g.
array:1 [
"class_teachers" => null
]
$request->has('class_teachers')
true
$request->filled('class_teachers')
false
2)从 html 页面标题中删除 html 特殊字符。
3)嵌套三元运算
必须明确使用括号来指示操作的顺序。
1 ? 2 : 3 ? 4 : 5; // deprecated
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 5); // ok
4) 或运算符
Blade“或”运算符已被删除,取而代之的是 PHP 的内置 ?? “空合并”运算符
$user->name or "-" --> $user->name ?? "-"
5)输入外观
'Input' => Illuminate\Support\Facades\Input::class, --> 'Input' => Illuminate\Support\Facades\Request::class,
6) 不推荐使用带大括号的数组和字符串偏移访问语法
$str = "test";
echo $str{0}; // deprecated
echo $str[0]; // ok
7) withCount 列格式
使用别名时,withCount 方法将不再自动将 _count 附加到结果列名上。
8) 日志记录
所有日志配置现在都位于其自己的 config/logging.php 配置文件中。您应该将默认配置文件的副本放置在您自己的应用程序中,并根据应用程序的需求调整设置。
log 和 log_level 配置选项可以从 config/app.php 配置文件中删除。
use Illuminate\Support\Facades\Log;
Log::info('Showing user profile for user: '.$id);
9) Queue
The 队列驱动程序环境变量已重命名为 QUEUE_CONNECTION。这不会影响您正在升级的现有应用程序,除非您有意修改 config/queue.php 配置文件。并将默认的 QUEUE_CONNECTION 更改为数据库
还要更改 .env 文件(非常重要)
10) TTL(以秒为单位)
// Laravel 5.7 - Store item for 30 minutes...
Cache::put('foo', 'bar', 30);
// Laravel 5.8 - Store item for 30 seconds...
Cache::put('foo', 'bar', 30);
11) 碳2.0Laravel 现在支持 Carbon 1 和 Carbon 2;因此,如果没有检测到与任何其他软件包的兼容性问题,Composer 将尝试升级到 Carbon 2.0。请查看Carbon 2.0 迁移指南 https://carbon.nesbot.com/docs/#api-carbon-2.
12) whereDate 方法
查询生成器的 whereDate 方法现在将 DateTime 实例转换为 Y-m-d 格式:
// previous behaviour - SELECT * FROM `table` WHERE `created_at` > '2018-08-01 13:00:00'
$query->whereDate('created_at', '>', Carbon::parse('2018-08-01 13:00:00'));
// current behaviour - SELECT * FROM `table` WHERE `created_at` > '2018-08-01'
$query->whereDate('created_at', '>', Carbon::parse('2018-08-01 13:00:00'));
.
.
.
还可以有更多。这是我升级项目时必须做的事情。请通过迁移指南 https://laravel.com/docs/7.x/upgrade
至少,我希望,我能够给你一个良好的开端。祝你好运!