我想將現有的 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'); } }
自動更新此類「範例」檔案可能根本不可能自動進行,因為使用者可以在其專案中編輯它們,這就是它們不在供應商中的原因。
更新PHP 相關語法(例如提到的類型提示)的最佳選擇可能是具有適當規則的PHP-CS-Fixer 之類的東西,但您的函數範例無法使用它,因為這需要舊的定義方式透過PHPDoc 傳回型別。
如果您修改了這些文件,則可以從 Laravel 儲存庫手動複製這些變更並將其調整為您的程式碼。
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 中編寫的程式碼。