揭開Laravel面紗:用於構建Web應用程式的跨平臺PHP框架

揭開Laravel面紗:一起探究這個Web應用程式構建PHP框架

近年來,Web應用程式和網站的開發變得越來越簡單。即使是我們當中最受技術挑戰的人也已經相當熟練地使用WordPress和Wix等產品。

對於更高階的開發人員,有許多工具可以幫助簡化開發過程。這些工具中最有用的工具之一是Laravel。

本文回答了“什麼是Laravel?”這個問題。通過將其分解為Web開發中使用的PHP框架的基礎知識的概述。接下來,我們將概述Laravel的功能,列出Laravel的重要結構和元件,並描述一些更有用的Laravel包。

  1. 什麼是Laravel?
  2. 為什麼使用Laravel?
  3. Laravel是做什麼的?
  4. Laravel是如何工作的?
  5. 如何開始使用Laravel?
  6. Laravel還能做什麼?
  7. 2022年的Laravel

什麼是Laravel?

問題的簡單答案,“什麼是Laravel?” 一句話總結:Laravel是一個用於構建Web應用程式的跨平臺PHP框架。

但真正瞭解Laravel的好處及其用途需要更深入的瞭解。Laravel允許開發人員利用一個大型的預程式設計功能庫(例如身份驗證、路由和HTML模板)。訪問此庫可以更輕鬆地快速構建強大的Web應用程式,同時最大限度地減少所需的編碼量。

Laravel提供了一個功能強大的開發環境,以及直觀和富有表現力的命令列介面。此外,Laravel使用物件關係對映(ORM) 來簡化資料訪問和操作。

Laravel應用程式具有高度可擴充套件性並且具有易於維護的程式碼庫。得益於Laravel的模組化打包系統和強大的依賴管理,開發人員還可以無縫地將功能新增到他們的應用程式中。

Laravel是前端還是後端?

Laravel主要是一個後端開發框架,儘管它確實提供了一些前端功能。然而,Laravel的許多功能與前端無關。

Laravel是一種程式語言嗎?

Laravel是一個PHP框架 ,使用指令碼語言而不是嚴格的PHP程式語言。雖然指令碼語言和程式語言是相關的,但它們有幾個明顯的區別,主要是在易用性和執行速度方面。

指令碼語言是特定於平臺的解釋語言。相反,程式語言是與平臺無關的編譯語言。由於特定於平臺,指令碼語言依賴於它們正在工作的應用程式的編譯器。

使用指令碼語言構建的應用程式在執行時編譯,這意味著每條指令在執行時單獨解釋,使應用程式比預編譯的應用程式慢。如果遇到執行時錯誤,執行時編譯也會導致應用程式停止或關閉;相反,預編譯的應用程式在編譯期間執行錯誤檢查,使其在執行時更加健壯。然而,對於許多使用者來說,指令碼語言的缺點被它們的易用性和迭代所抵消。

什麼是PHP框架?

PHP(PHP Hypertext Preprocessor的遞迴首字母縮寫詞)是一種開源的伺服器端指令碼語言,廣泛用於Web開發。截至2021年初,近80%的網站都在使用PHP。雖然許多人可能不熟悉PHP,但每個人都熟悉最知名的PHP應用程式之一——WordPress。

PHP框架提供了一組程式碼庫,其中包含允許使用者更快地構建應用程式的預程式設計模組。它們為Web開發人員提供了許多好處,包括更快速的開發、減少編寫程式碼的需求以及增強的安全性。它們還幫助新手開發人員建立良好的編碼實踐,因為它們需要特定的程式碼組織。更重要的是,與從頭開始構建的應用程式相比,PHP 框架通常需要更少的維護。

許多現代PHP框架都是物件導向的。因此,在深入研究框架之前對類、物件和繼承等概念有基本的瞭解是有益的。

MVC圖

MVC圖(來源:維基百科)

PHP框架使用模型-檢視-控制器 (MVC) 架構。對於那些不熟悉MVC架構的人來說,模型是應用程式的資料,以及所有相關的邏輯。例如,訂閱者表可以是模型。檢視提供了與使用者的互動點,可以檢視和修改來自模型的資料。控制器是檢視和模型之間的管道。換句話說,控制器接受使用者請求,從模型中檢索必要的資訊,對其進行處理,然後將其返回給檢視。

PHP應用程式(例如WordPress)存在一些已知漏洞。最顯著的例子是程式碼注入和SQL隱碼攻擊。Laravel包含有助於防止SQL隱碼攻擊和其他攻擊的功能。

但是,開發人員應採取額外的努力,例如滲透測試,以確保其應用程式的安全性。根據Cloud Defense的IT專家Barbara Ericson的說法,Web應用程式安全性包括滲透測試和Web應用程式防火牆,兩者齊頭並進。

滲透測試旨在由合格的網路安全專業人員執行更復雜的測試,他們將嘗試在沒有任何關於其開發的先驗知識的情況下闖入您的系統,以識別未修補的安全漏洞。

為什麼使用Laravel?

回答完“什麼是Laravel?”後,下一個問題是“為什麼選擇Laravel?” Laravel提供了大量強大的工具,有助於使Web應用程式開發過程更輕鬆、更快,並且最終的應用程式程式碼庫結構良好且易於維護。

Laravel的一些具體好處是:

Laravel易於學習

鑑於適當的背景,Laravel相對容易學習。Laravel確實需要對PHP和麵向物件程式設計 (OOP) 概念有大致的瞭解才能有效使用。至少了解一些HTML也很有幫助。對於任何MVC架構,理解關聯式資料庫管理系統(如MySQL或PostgreSQL)也很有幫助。

Laravel簡化了開發過程

從一開始,Laravel旨在簡化各種Web開發專案中常見的任務,如路由、身份驗證、遷移、快取等。Laravel使用直觀且富有表現力的命令列介面和Composer使將預製模組整合到應用程式中變得簡單。

Laravel還擁有大量的線上文件集合,這對於更有經驗的開發人員來說是一個很好的起點。還提供針對所有技能水平的各種線上學習資源。

Laravel為所有級別的開發人員提供工具

Laravel將自己描述為一個漸進式框架,這意味著它包含了所有級別的使用者都會發現有用的各種功能。例如,初學者可以訪問入門工具包,用於基本身份驗證功能等模組。許多這些工具將在下面更詳細地討論。

Laravel專案結構

Laravel專案結構(來源:ITSolutionStuff.com

更有經驗的使用者可以利用入門工具包底層的引擎來構建他們自己的身份驗證流程,並將它們與他們喜歡的前端整合。

Laravel輕鬆擴充套件

Laravel具有高度可擴充套件性。通過對快速、分散式快取系統的整合支援,Laravel應用程式能夠處理每月數百萬個請求。Laravel還提供了一個無伺服器部署平臺Vapor,它基於AWS並提供了高度的可擴充套件性。

Laravel擁有龐大的生態系統和社羣

Laravel擁有龐大的生態系統,由大型開發者社羣支援。因為Laravel是最常用的PHP框架之一,所以可用的Laravel應用程式和包庫非常豐富。官方的Laravel包和第三方包都是現成的。

Laravel的官方軟體包(其中許多將在下面討論)包括身份驗證、伺服器管理、訂閱計費、瀏覽器測試和自動化等等。許多網站都提供了第三方軟體包,包括Packalyst 和Laravel News

Laravel開發者社羣也提供了大量資訊。有問題的開發人員一定會通過訪問Laravel的眾多論壇之一找到答案,例如Laravel.ioThe Laravel subredditLaracasts

Laravel被廣泛使用

許多公司使用Laravel來幫助構建功能強大的網站:

Vacations by Rail是一個使用Laravel PHP框架構建的火車旅行計劃網站。它還與Softrip的預訂引擎整合。

Vacations by Rail後臺使用Laravel

Vacations by Rail後臺使用Laravel

用於Mac和iOS的精選應用程式的Setapp網站也是使用Laravel PHP框架構建的。

SetApp是用Laravel構建的

SetApp是用Laravel構建的

Restaurants.com的餐廳搜尋應用程式使用起來非常直觀,這要歸功於它是使用Laravel移動應用程式模板構建的。

Restaurant.com由Laravel提供支援

Restaurant.com由Laravel提供支援

Laravel是做什麼的?

Laravel的功能集過於廣泛,無法在這個簡短的概述中完全涵蓋。一些更重要的功能包括:

路由處理(Route Handling)

Laravel提供了簡單直觀的路由處理,使用簡單的名稱來識別路由而不是長路徑名。使用路由識別符號還可以更輕鬆地維護應用程式,因為路由名稱可以在一個地方更改,而不必在整個過程中更改。Laravel應用程式中的所有Web介面路由都註冊在routes/web.php檔案中。

安全(Security)

Laravel包含許多安全功能,包括使用者身份驗證、使用者角色授權、電子郵件驗證、加密服務、密碼雜湊和密碼重置功能。

遷移(Migration)

Laravel使用遷移為應用程式資料庫提供版本控制。遷移跟蹤資料庫隨著時間的推移如何被修改,從而在必要時更容易銷燬或重新建立資料庫。

模板(Templating)

Blade是Laravel的PHP模板引擎。PHP模板引擎有助於將業務邏輯與HTML模板分開,從而使程式碼庫更易於維護。Laravel的許多功能都依賴於Blade模板。Blade提供了比其他模板引擎更多的功能,因為Blade允許使用普通的PHP程式碼,而其他的則不允許。

會話(Sessions)

Laravel使用會話在多個請求中儲存有關使用者的資訊。Cookie是Laravel內建會話驅動程式的一個示例。

資料驗證(Data Validation)

Laravel使驗證傳入的使用者資料變得簡單。Laravel包含許多資料驗證規則,並帶有可自定義的錯誤訊息。

快取處理(Cache Handling)

Laravel支援資料快取以最小化應用程式任務處理時間。Laravel的快取API支援多種第三方快取後端,例如Memcached和Redis。

錯誤處理(Error Handling)

啟動新的Laravel專案時會自動配置錯誤處理。Laravel應用程式可以在除錯模式下執行,為發生的所有錯誤生成詳細的錯誤訊息。

測試(Testing)

Laravel開箱即用地提供了大量的測試資料。Laravel支援單元測試,它可以測試應用程式程式碼的小而獨立的部分,也支援功能測試,它可以測試更大的程式碼部分和更高階別的功能。

儲存和檔案管理(Storage and File Management)

Laravel使用Flysystem PHP包來提供用於處理各種檔案系統的驅動程式,從本地檔案系統到基於雲的儲存,例如Amazon S3。Laravel還提供了使用SSH檔案傳輸協議 (SFTP)的檔案傳輸。

電子郵件(Email)

Laravel包含一個基於SwiftMailer庫的電子郵件API,它允許通過選擇的服務傳送電子郵件。Laravel支援電子郵件附件和電子郵件佇列。

通知(Notifications)

Laravel支援通過多種渠道傳送通知,無論是眾所周知的渠道,如SMS或Slack,還是使用Laravel社羣開發的渠道。

Laravel是如何工作的?

為了更好地理解Laravel可以做什麼,瞭解Laravel如何處理請求(即請求生命週期)非常重要。如上所述,Laravel基於MVC架構,並響應來自使用者的請求,控制器使用這些請求從模型中檢索和處理資料,並在檢視中將資訊呈現給使用者。

請求通過public/index.php檔案進入Laravel應用程式,該檔案載入框架的其餘部分並檢索Laravel應用程式的例項。在檢索應用程式例項後,請求被路由到控制檯核心或HTTP核心。

在其他任務中,核心定義了一系列載入程式,這些載入程式 執行在請求處理之前必須完成的任務,以及定義請求在處理之前必須通過的任何中介軟體。這些預處理任務包括載入應用程式所需的任何服務提供者。

一旦引導完成並註冊了服務提供者,請求就會傳遞到路由器,然後路由器將請求定向到路由或控制器。此外,路由器執行任何所需的特定於路由的中介軟體。在請求通過所有必需的中介軟體後,路由或控制器方法的執行返回一個響應,該響應通過鏈傳回檢視。

你如何開始使用Laravel?

要開始使用Laravel,有必要了解Laravel中一些最重要的結構和功能。

服務容器

服務容器是Laravel的核心元件之一。服務容器管理類依賴和依賴注入。

Laravel服務容器

Laravel服務容器(來源:Christopher Rumpel)

服務容器是開發人員繫結執行Laravel應用程式所需的一切的地方。

Service Providers

同樣重要的是Laravel Service Providers,將類和依賴項注入到服務容器中。

Facades

Facade是 繫結在服務容器中的類的靜態介面。外觀通過提供易於記憶的語法作為長類名的代理來建立易用性。

Packages

Packages是向Laravel新增功能的方式。有獨立Package和特定於應用程式的包。服務提供者告訴Laravel在哪裡載入包資源。

Laravel和許多其他本地開發工具一樣,依賴於Docker。Docker是一種基於容器的工具,可讓開發人員更輕鬆地建立和部署他們的應用程式。使用Docker容器,開發人員將其應用程式與其依賴項打包在一起,並將其部署為單個包。

命令列介面

Laravel包含一組命令列介面(CLI)。Artisan控制檯包含的命令可幫助開發人員快速構建框架程式碼、簡化和自動化重複性任務,以及更輕鬆地完成應用程式構建。Sail是Laravel 8中引入的輕量級命令列介面。Sail允許開發人員與Laravel的預設開發環境Docker進行互動。

Laravel Artisan CLI

Laravel Artisan CLI(來源:tutorialspoint.com)

Eloquent

Eloquent是一個物件關係對映器 (ORM),它允許 與資料庫輕鬆互動。使用MVC架構,模型對應於資料庫中的各個表。使用Eloquent,開發人員可以確保快速檢索、簡單的插入和更新以及直觀的關係定義。

Composer

Composer是一個第三方應用程式級的 PHP 依賴管理工具。Composer管理Laravel應用程式所需的庫、模組和外掛。

Homestead

Laravel Homestead是一個開發環境,通過提供預打包的Vagrant盒子,允許在虛擬機器上進行開發。Homestead包含Laravel應用程式開發所需的一切,包括PHP、MySQL、Nginx、Composer、Redis等等,因此開發人員無需在本地機器上安裝這些包。Homestead確實需要安裝 Vagrant和VirtualBoxParallels

身份驗證入門套件

Laravel包含許多包來幫助開發人員快速啟動和執行。在深入研究之前,您可能希望檢視學習Laravel的許多可用資源中的一些。Laravel包含幾個入門工具包,可幫助開發人員快速實現常用功能。

Laravel Breeze是一個身份驗證入門工具包。它包括常見的身份驗證和使用者帳戶功能,例如使用者註冊、登入、電子郵件驗證以及密碼確認和重置。Breeze還包括一個通過Vue的javascript前端。Breeze有一個使用Blade模板和Tailwind CSS的預設檢視層。

對於更高階的身份驗證功能,Laravel現在提供了Jetstream,它在版本8中首次引入。除了Breeze中的功能之外,Jetstream還提供了額外的高階功能,例如雙因素身份驗證、會話管理、通過Laravel Sanctum提供的API支援,以及可選的團隊管理。

對於喜歡使用自己的身份驗證前端的開發人員,Laravel提供了Fortify——一個與前端無關的身份驗證後端。Fortify是Jetstream身份驗證入門套件的引擎, 包括所有Laravel身份驗證功能(例如,使用者註冊、登入、電子郵件驗證、雙因素身份驗證等)。Fortify不是Laravel Breeze的底層引擎。

Laravel還通過Laravel Socialite提供基於社交媒體的身份驗證 (OAuth)。

對於希望以最少的伺服器配置部署應用程式,或者實際上想要無伺服器部署的開發人員,Laravel提供了Forge和Vapor。Forge允許通過各種基礎設施提供商以最少的配置工作進行部署。Vapor是一個基於AWS的無伺服器部署平臺。

對於那些希望採取下一步行動的人,開發人員可以通過他們自己的自託管網站部署他們的Laravel應用程式。這是因為自託管您的網站將要求您使用單個PHP命令(使用最新版本)和對伺服器的SSH訪問設定多個已定義的資料庫。Laravel在一個開源的PHP框架中提供了這兩種功能,而且作為一個額外的好處,它很容易安裝。

Laravel還能做什麼?

更好的問題可能是,“  Laravel不能做什麼?” 存在數以千計的包來完成任意數量的功能。一些更有趣的官方Laravel包是:

Cashier和Spark

Laravel Cashier為Stripe和Paddle的訂閱計費服務提供了一個介面。Cashier還提供高階訂閱功能,例如優惠券和取消寬限期。

Cashier是Laravel Spark的引擎,這是一個計費管理面板 ,允許使用者建立和管理他們的訂閱。Spark也僅限於Stripe和Paddle作為支付提供商;自定義提供程式尚未與Spark相容。然而,Spark確實允許開發人員選擇他們的前端。

Valet

Laravel Valet是一個macOS開發環境,專注於速度和最少的資源使用(大約7MB的RAM)。Valet並不打算完全替代Sail或Homestead。相反,它適用於具有特定需求和資源限制的使用者。

有關更多軟體包,請參閱Laravel網站或Packalyst

2022年的Laravel

Laravel當前版本是9版,最初於2020年9月釋出。該版本包括許多新功能和改進。版本8中的一些新功能包括Laravel Jetstream、作業批處理(允許執行一批作業,然後執行定義的操作)、Dynamic Blade元件(允許基於執行時值渲染執行時元件)和使用Tailwind Laravel分頁器中預設的CSS等等。還對速率限制和維護模式進行了改進。

請注意,Laravel每年9月都會釋出一個新的主要版本,並根據需要釋出次要版本。

小結

尋求快速簡單的Web應用程式開發的開發人員應該考慮學習Laravel。Laravel提供了一套廣泛而強大的資源,通過消除從頭開始編寫許多常見任務的需要來簡化開發過程。

Laravel還提供了一個安全的虛擬開發環境和直觀的命令列介面。由於Laravel易於學習並且擁有強大的支援社羣和生態系統,因此它是許多開發人員的自然選擇,無論是初學者還是擁有多年經驗的專家。

評論留言