首頁 > 後端開發 > php教程 > Laravel 4至Laravel 5-簡單升級指南

Laravel 4至Laravel 5-簡單升級指南

尊渡假赌尊渡假赌尊渡假赌
發布: 2025-02-18 09:05:09
原創
310 人瀏覽過

從Laravel 4遷移到Laravel 5:循序漸進指南

Laravel 5 已經發布,但人們對變化的恐懼依然存在。我們不斷聽到人們抱怨一些重大的改變,例如新的文件夾結構。我的應用如果執行composer update會崩潰嗎?

本文將指導您如何將現有的Laravel 4應用遷移到Laravel 5,並了解新的文件夾結構。

Laravel 4 to Laravel 5 - The Simple Upgrade Guide

關鍵要點

  • 從Laravel 4升級到Laravel 5包含多個步驟,包括更新composer.json文件、更新路由、控制器和視圖,以及修改任何自定義代碼以使用Laravel 5中的新功能和更改。
  • Laravel 5引入了許多新功能和改進,例如新的目錄結構、改進的路由、更好的環境配置處理以及新的組件,如Socialite、Elixir和Scheduler。
  • 升級到Laravel 5的過程可能很複雜且耗時,具體取決於應用程序的大小。但是,沒有必要升級到新的文件夾結構;您可以保留舊的結構,只更新composer依賴項,但這並不是推薦的做法。

安裝

我現有的Laravel 4應用程序是一個之前的關於使用Google Analytics API的文章中的演示程序。該應用程序代碼不多,但足以用於我們的教程。

讓我們首先在計算機上安裝Laravel 5,並創建一個臨時文件夾來保存我們的Laravel 4版本的應用程序。

composer create-project laravel/laravel --prefer-dist
登入後複製
登入後複製
登入後複製

我更喜歡通過composer安裝Laravel,但您可以訪問文檔以了解更多關於Laravel安裝程序的信息。

您可以使用存儲庫中的Vagrant虛擬機,或使用Homestead Improved。如果一切順利,您應該會看到Laravel 5的歡迎頁面。

配置文件

舊的app/config文件夾現在位於應用程序的根目錄下,因此我們必須將app/config/analytics.php移動到config/analytics.php。憑據直接粘貼到文件中,所以為什麼不使用環境變量呢?

// config/analytics.php

return [
  'app_name'          => env('app_name'),
  'client_id'         => env('client_id'),
  'client_secret'     => env('client_secret'),
  'api_key'           => env('api_key')
];
登入後複製
登入後複製
<code>// .env

app_name='YOUR APP NAME'
client_id='YOUR CLIENT ID'
client_secret='CLIENT SECRET'
api_key='API KEY'</code>
登入後複製
登入後複製

.env文件會自動加載,可用於將本地環境配置與生產環境、測試環境等分開。

路由

Laravel 4路由註冊在app/routes.php中。在Laravel 5中,所有與HTTP相關的部分都分組在app/Http文件夾下,包括路由,因此讓我們將app/routes.php移動到app/Http/routes.php

過濾器

Laravel 5已從過濾器遷移到中間件,因此如果您的路由中包含任何過濾器,請確保將其更改為中間件。

Route::get('/report', ['middleware' => 'auth', function() {
    //
}]);
登入後複製
登入後複製

如果您有自定義過濾器,您可以將其遷移為中間件。我的路由中使用了一個GoogleLogin中間件,實現如下所示。

composer create-project laravel/laravel --prefer-dist
登入後複製
登入後複製
登入後複製
// config/analytics.php

return [
  'app_name'          => env('app_name'),
  'client_id'         => env('client_id'),
  'client_secret'     => env('client_secret'),
  'api_key'           => env('api_key')
];
登入後複製
登入後複製
<code>// .env

app_name='YOUR APP NAME'
client_id='YOUR CLIENT ID'
client_secret='CLIENT SECRET'
api_key='API KEY'</code>
登入後複製
登入後複製

默認情況下會添加CRSF保護中間件。如果要刪除它,您可以轉到app/Http/Kernel.php文件並註釋掉相應的行。

控制器

因為我們的控制器被認為是HTTP邏輯的一部分,我們需要將app/controllers/*移動到app/Http/Controllers並使用App\Http\Controllers命名空間。您需要修復的最後一個問題是將BaseController更改為Controller類。

如果您不喜歡App根命名空間,您可以使用以下artisan命令全局更改它。

Route::get('/report', ['middleware' => 'auth', function() {
    //
}]);
登入後複製
登入後複製

遷移

我們的Google Analytics應用程序沒有任何本地數據庫交互,但升級過程值得一提。

app/database目錄現在位於/database文件夾內,您只需要將文件移動到那裡即可。該目錄已經包含一個users表和一個password_resets表,您可以根據需要刪除或更新它們。

模型

Laravel 4中的models文件夾消失了,Laravel 5直接在app文件夾中放置User模型作為示例。您也可以將您的模型複製到那裡,並使用App命名空間。

但是,如果您不喜歡將模型放在那裡的想法,您可以在app目錄下創建一個名為Models的新文件夾,但不要忘記使用App\Models命名空間為您的類命名空間。

// app/Http/Middleware/GoogleLogin.php

class GoogleLogin
{
  public function handle($request, Closure $next)
  {
    $ga = \App::make('\App\Services\GoogleLogin');
    if (!$ga->isLoggedIn()) {
      return redirect('login');
    }

    return $next($request);
  }
}
登入後複製

應用程序服務

我們的src文件夾包含一個GA_Service和一個GA_Utils類。如果我們認為它們是服務,我們可以將它們放在app/Services中。否則,我們可以創建一個名為app/GA的新文件夾,我們將在此處存儲我們的服務類。這將導致問題,因為我們一開始沒有使用PSR-4自動加載,因此我們需要使用正確的新的命名空間更新控制器中的類引用。

視圖

應用程序視圖從app/views文件夾移動到resources/views文件夾。

resources文件夾還包含用於應用程序本地化的lang文件夾,以及用於前端資源的assets文件夾。 Laravel 5引入了Elixir,它將Gulp任務運行器適配到Laravel開發環境。

Composer

確保您複製應用程序的composer依賴項並進行任何必要的升級。對於我們的演示,我將把"google/apiclient": "1.1.*"移動到新的composer.json中,並執行composer update以反映這些更改。

表單和HTML

illuminate/html包已從Laravel 5的默認安裝中移除,您需要單獨安裝它。

要將HTML輔助函數帶回到您的項目中,您需要將"illuminate/html": "5.0.*"包添加到您的composer.json中並運行composer update,然後您需要將'Illuminate\Html\HtmlServiceProvider'添加到您的config/app.php提供程序數組中。如果您想在blade模板中使用Html和Form外觀,您可以將以下外觀添加到您的config/app.php外觀數組中。

composer create-project laravel/laravel --prefer-dist
登入後複製
登入後複製
登入後複製

結論

升級到Laravel 5的過程的複雜性和持續時間始終取決於您的應用程序的大小,對於您的特定情況,該過程可能比此示例長得多。在本文中,我們試圖解釋常見的過程,該過程應該可以處理大多數(如果不是全部)需要更改的內容。

您不必升級到新的文件夾結構,您可以保留舊的結構,只更新您的composer依賴項,但這並不是推薦的做法。如果您有任何問題或意見,請務必在下面發布。有關更多信息,請參閱完整的版本升級指南。

Laravel 4到Laravel 5升級指南常見問題解答(FAQs)

Laravel 4和Laravel 5的主要區別是什麼?

Laravel 5在Laravel 4的基礎上引入了許多新功能和改進。這些包括新的目錄結構、改進的路由、更好的環境配置處理以及新的組件,如Socialite、Elixir和Scheduler。 Laravel 5還引入了一個新的命令行界面,稱為Artisan,它為常見任務提供許多有用的命令。

如何在Laravel 5中處理環境配置?

Laravel 5引入了一種新的環境配置處理方式。 Laravel 5不再使用單個.env.php文件,而是為每個環境使用一個.env文件。這使得管理不同環境的不同配置更容易。您可以在.env文件中設置環境變量,Laravel將自動加載它們。

Laravel 5中的新目錄結構是什麼?

Laravel 5引入了一個新的目錄結構,該結構旨在更直觀和靈活。 app目錄現在是應用程序的根目錄,它包含應用程序不同部分的幾個子目錄,例如Http、Providers和Console。 public目錄現在是Web服務器的根目錄,它包含您的資源,例如圖像、JavaScript和CSS文件。

如何從Laravel 4升級到Laravel 5?

從Laravel 4升級到Laravel 5包含幾個步驟。首先,您需要更新您的composer.json文件以要求最新版本的Laravel。然後,您需要更新應用程序的代碼以使用Laravel 5中的新功能和更改。這可能涉及更新您的路由、控制器和視圖,以及您編寫的任何自定義代碼。

什麼是Laravel Elixir以及如何使用它?

Laravel Elixir是Laravel 5中的一個新組件,它為定義基本的Gulp任務提供了一個簡潔流暢的API。它支持常見的CSS和JavaScript預處理器,如Sass和CoffeeScript,它還提供了一種方便的方法來版本化和連接您的資源。

如何使用Laravel 5中的新路由系統?

Laravel 5引入了一個新的路由系統,它比Laravel 4中的路由系統更靈活和強大。路由現在在app/Http/routes.php文件中定義,您可以對路由進行分組,為它們應用中間件,甚至為它們命名空間。

什麼是Laravel Socialite以及如何使用它?

Laravel Socialite是Laravel 5中的一個新組件,它提供了一種簡單方便的方法來使用OAuth提供程序進行身份驗證。它開箱即用地支持多個流行的提供程序,您還可以添加自己的自定義提供程序。

如何使用Laravel 5中的新Artisan命令?

Laravel 5引入了一個新的命令行界面,稱為Artisan,它為常見任務提供許多有用的命令。您可以使用Artisan生成樣板代碼、運行數據庫遷移,甚至啟動本地開發服務器。

Laravel 5.0中的新功能是什麼?

Laravel 5.0引入了一些新功能,包括新的目錄結構、改進的路由、更好的環境配置處理以及新的組件,如Socialite、Elixir和Scheduler。它還引入了一個新的命令行界面,稱為Artisan。

如何在Laravel 5中處理數據庫遷移?

Laravel 5提供了一個強大的數據庫遷移系統,允許您對數據庫模式進行版本控制。您可以使用Artisan命令行工具創建遷移,然後使用migrate命令運行它們。這使得在不同環境中應用數據庫模式更改變得容易。

以上是Laravel 4至Laravel 5-簡單升級指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板