從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中文網其他相關文章!

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用會話構建高效購物車系統的步驟包括:1)理解會話的定義與作用,會話是服務器端的存儲機制,用於跨請求維護用戶狀態;2)實現基本的會話管理,如添加商品到購物車;3)擴展到高級用法,支持商品數量管理和刪除;4)優化性能和安全性,通過持久化會話數據和使用安全的會話標識符。

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。