我想将现有的 Laravel 9 项目升级到版本 10。目标是,不仅供应商文件可以通过 Composer 更新。此外,我还想在供应商文件夹之外反映我的项目代码中的更改。
我按照 Laravel 文档的升级指南升级了我的项目。
这是已更改的文件。
例如我的 app/Console/Kernel.php
应该更改为
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { // $schedule->command('inspire')->hourly(); } /** * Register the commands for the application. * * @return void */ protected function commands() { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } }
至
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * Define the application's command schedule. */ protected function schedule(Schedule $schedule): void { // $schedule->command('inspire')->hourly(); } /** * Register the commands for the application. */ protected function commands(): void { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } }
P粉7920264672024-03-28 09:09:17
自动更新此类“示例”文件可能根本不可能自动进行,因为用户可以在其项目中编辑它们,这就是它们不在供应商中的原因。
更新 PHP 相关语法(例如提到的类型提示)的最佳选择可能是具有适当规则的 PHP-CS-Fixer 之类的东西,但您的函数示例无法使用它,因为这需要旧的定义方式通过 PHPDoc 返回类型。
如果您修改了这些文件,则可以从 Laravel 存储库手动复制这些更改并将其调整为您的代码。
P粉0025464902024-03-28 00:41:58
Laravel 新应用程序框架的更改可以通过其比较工具在 Github 上查看:https://github.com/laravel/laravel/compare/9.x...10.x
(您可以使用 GUI Git 客户端或 Git 在本地执行此操作命令行,以及。)
这些更改可以转换为 .patch
文件,然后您可以将其应用于您的应用程序。 Github 再次提供了一个相当简单的方法来做到这一点; https://github.com/laravel/laravel/比较/9.x...10.x.补丁。
将 .patch 文件保存在本地后,您可以使用 git apply <path-to-patch-file>
将其应用到您的存储库中。在大多数情况下,这应该完全适用。
需要明确的是,这并不能替代遵循 https://laravel.com/docs/10.x/upgrade,因为它只会对默认应用程序框架进行必要的调整;它不会以任何方式更新您在 Laravel 中编写的代码。