第253期 / November 5, 2018

分享到臉書!分享到維特!分享到噗浪!分享到Google+!分享到微博!轉寄友人友善列印

PHP Web框架-Laravel簡介

作者/邱國華

[發表日期:2018/11/5]

作者簡歷

目前任職於凌群電腦證券產品研發處,專長包含C、C#、JAVA等語言的程式撰寫,並且使用MySQL資料庫系統,於本公司參與Front End Processor產品與開戶平台專案開發。

Laravel簡介

近期開發網頁程式主要使用Framework來進行開發,以規範程式的寫法與架構,並提供許多程式產生器與套件,因此可降低維護成本與增加開發效率。Framework還可避免透過副檔名就得知網頁程式使用的後端技術,而降低被駭客透過漏洞攻擊之風險。

在圖一中可發現Framework中開發者愛用的PHP框架為Laravel,Laravel是一個免費的開源PHP Web框架,由Taylor Otwell所創建。根據laravel 官方介紹所描述,Laravel的Eloquent ORM提供了漂亮、簡潔的ActiveRecord來和資料庫互動,每個資料表有一個對應的「模型」可以用來跟資料表互動,使用者可以透過模型查詢與新增資料表內的資料


《圖一》Framework排行榜


Laravel優缺點

一、優點:
  • Restfulcontrollers提供了一種可選的方法來分離HTTPGET和POST請求的邏輯。

  • EloquentORM,減少程式對資料庫使用的撰寫。

  • Migrations&Seeding-數據資料庫管理及測試資料產生。

  • 使用Composer安裝-簡化安裝,快速引入其他人開發的元件。

  • 支援PHP標準化PHP-FIG。

  • 使用Laravel開發的人眾多,在各種平台有許多教學。

  • 容易使用的認證模組,內建一個簡易的認證模組,可以供會員註冊及登出登入使用。

二、缺點:
  • Laravel環境難安裝。

  • 架構複雜,初學者需要較多的適應時間。

  • 執行速度較傳統PHP慢。

Laravel架構

一個Laravel根目錄會如圖二包含以下的資料夾:
  • app目錄:應用程式的核心程式碼。

  • bootstrap目錄:框架啟動跟自動載入設定的檔案。

  • config目錄:應用程式的設定檔。

  • database目錄:資料庫遷移與資料填充檔案。

  • public目錄:控制器和你的資源檔(圖片、JavaScript、CSS,等等)。

  • resources目錄:視圖、原始的資源檔(LESS、SASS、CoffeeScript),以及語言檔。

  • routes目錄:路由檔案。

  • storage目錄:編譯後的Blade模板、基於檔案的session、檔案快取和其他框架產生的檔案。此資料夾細分成app、framework,及logs目錄。app目錄可用於存儲應用程式使用的任何檔案。framework目錄被用於儲存框架產生的檔案及快取。最後,logs目錄包含了應用程式的日誌檔案。

  • tests目錄:自動化測試。

  • vendor目錄:Composer依賴模組。


《圖二》Laravel目錄結構


使用MySQL範例

底下範例是一個使用Laravel做一個簡單的網頁對資料庫進行資料的新增與刪除,並將資料庫中的資料透過網頁來顯示,在這邊使用的資料庫是MySQL,關於Laravel使用資料庫的方式可以參考官方文件: https://laravel.tw/docs/5.2/queries。在這個範例中需要修改routes的路由設定、app\Http\Controllers的控制器與resources\views的視圖。

首先設定路由,在圖三中的第3行將初始網頁的位置導向視圖,設定內容如圖三。


《圖三》路由設定


在視圖中設定從資料庫取得資料後輸出在網頁的圖四表格並在圖五設定開啟該網頁時透過圖三中的第18行去呼叫圖六的控制器部分,並由於本程式只是簡單的存取資料庫,故將模型(model)簡化。


《圖四》視圖設定輸出表格



《圖五》視圖傳遞給路由



《圖六》視圖讀取DB資料


因此,開啟datagrid網頁時會出現如圖七的畫面。


《圖七》網頁讀取DB資料


在視圖中設定按下新增後跳出的視窗,設定內容如圖八,設定按下save後會透過圖五中的add()將資料透過圖三的路由設定中adduser傳遞給控制器中的create(),並在圖九中的create()中將資料加入資料庫。


《圖八》視圖中設定按下新增之設定


《圖九》控制器中將資料加入資料庫


在網頁中按下新增後會跳出的圖十的畫面,輸入要加入資料庫的資料後按下儲存按鈕後,就會將資料加入資料庫並顯示最新的資料庫內容,其內容如圖十一。


《圖十》新增畫面


《圖十一》新增後畫面


在視圖中設定按下刪除後跳出的視窗,設定內容如圖十二,設定按下save後會透過圖五中的deletedata ()將資料透過圖三的路由設定中deleteuserdata傳遞給控制器中的deletdata (),並在圖十三中的deletdata ()中將資料從資料庫中刪除。


《圖十二》視圖中設定按下刪除之設定


《圖十三》控制器中將資料從資料庫刪除


在網頁中按下刪除後會跳出的圖十四的畫面,輸入要從資料庫刪除的itemID後按下儲存按鈕後,就會將資料庫中itemID的資料刪除並顯示最新的資料庫內容,其內容如圖十一。


《圖十四》刪除畫面



《圖十五》刪除後畫面


結論

在Figure16中可看到Laravel在google搜尋的熱度遠高於其他框架,代表Laravel是目前較熱門的用於開發網頁框架,也代表有許多的Laravel相關的資源供程式員參考。且Laravel自帶各種方便的服務,比如資料驗證、序列、資料移轉、測試、artisan命令列等等,因此Laravel是一個網頁開發者值得持續關注學習的框架。


《圖十六》google搜尋PHP框架的熱度


參考資料

https://www.ithome.com.tw/news/94913
https://en.wikipedia.org/wiki/Laravel
https://laravel.tw