Laravel 4至Laravel 5-簡單升級指南
從Laravel 4遷移到Laravel 5:循序漸進指南
Laravel 5 已經發布,但人們對變化的恐懼依然存在。我們不斷聽到人們抱怨一些重大的改變,例如新的文件夾結構。我的應用如果執行composer update會崩潰嗎?
本文將指導您如何將現有的Laravel 4應用遷移到Laravel 5,並了解新的文件夾結構。

關鍵要點
- 從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中文網其他相關文章!
熱AI工具
Undress AI Tool
免費脫衣圖片
Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片
AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。
Clothoff.io
AI脫衣器
Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!
熱門文章
熱工具
記事本++7.3.1
好用且免費的程式碼編輯器
SublimeText3漢化版
中文版,非常好用
禪工作室 13.0.1
強大的PHP整合開發環境
Dreamweaver CS6
視覺化網頁開發工具
SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
我如何了解最新的PHP開發和最佳實踐?
Jun 23, 2025 am 12:56 AM
TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource
什麼是PHP,為什麼它用於Web開發?
Jun 23, 2025 am 12:55 AM
PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti
如何設置PHP時區?
Jun 25, 2025 am 01:00 AM
tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()
我如何驗證PHP中的用戶輸入以確保其符合某些標準?
Jun 22, 2025 am 01:00 AM
TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout
編寫清潔和可維護的PHP代碼的最佳實踐是什麼?
Jun 24, 2025 am 12:53 AM
寫乾淨、易維護的PHP代碼關鍵在於清晰命名、遵循標準、合理結構、善用註釋和可測試性。 1.使用明確的變量、函數和類名,如$userData和calculateTotalPrice();2.遵循PSR-12標準統一代碼風格;3.按職責拆分代碼結構,使用MVC或Laravel式目錄組織;4.避免麵條式代碼,將邏輯拆分為單一職責的小函數;5.在關鍵處添加註釋並撰寫接口文檔,明確參數、返回值和異常;6.提高可測試性,採用依賴注入、減少全局狀態和靜態方法。這些做法提升代碼質量、協作效率和後期維護便利性。
什麼是php(serialize(),Unserialize())中的數據序列化?
Jun 22, 2025 am 01:03 AM
thephpfunctionserize()andunSerialize()redustoconvertComplexdatStructDestoresToroStoroStoroSandaBackagagain.1.Serialize()
如何將PHP代碼嵌入HTML文件中?
Jun 22, 2025 am 01:00 AM
可以將PHP代碼嵌入HTML文件中,但需確保文件以.php為擴展名,以便服務器能正確解析。使用標準的標籤包裹PHP代碼,可在HTML中任意位置插入動態內容。此外,可在同一文件中多次切換PHP與HTML,實現條件渲染等動態功能。務必注意服務器配置及語法正確性,避免因短標籤、引號錯誤或遺漏結束標籤導致問題。
如何使用PHP執行SQL查詢?
Jun 24, 2025 am 12:54 AM
Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas


