laravel 入門 1 (基礎概念)
1. 前言
PHP 是世界上最流行的程式語言之一,廣泛用於主要的項目中。例如,Facebook 就是利用 PHP 來創建和維護他們的內部系統;WordPress 內部基於 PHP, 作為報答它為超過26%的網站提供了技術支持。而現在PHP已經為超過82%的網站提供了支持(Web Technology Surveys 站點能夠跟蹤的伺服器端程式語言)。
為什麼開發PHP時候,大多數開發者都使用框架開發呢 ?
下面列出了一些使用 PHP 框架進行開發的好處:
- PHP 框架使開發更快。比如,你不需要寫複雜的查詢操作來從資料庫中檢索數據,PHP 提供了增加(Create)、讀取(Retrieve)(重新得到數據)、更新(Update)和刪除(Delete)的操作。
- 框架能夠使得開發者更容易地開發與維護系統。
- 代碼維護比原生的 PHP 應用更加容易。應用程式代碼將更加簡潔。
- MVC模式可保證快速發展。
- 框架更好地保護Web應用程式免受常見的安全威脅。
- DRY(Don't Repeat Yourself )原則讓最少的代碼發揮最大的作用。
以上所列的好處都具有十分重要的意義。儘管利用原生的 PHP 能夠寫出任何一個應用,但是現在的開發更多地要求使用工具和時間管理技能,以滿足市場需求。
PHP框架這麼多 , 為什麼要選擇 Laravel ?
1. 開箱即用的用戶身份驗證
2. 約定優於配置(也稱作按約定編程)
3. 輕鬆使用的電子郵件功能
4. Artisan 命令
5."測試驅動開發"的測試自動化
6. 簡潔的依賴注入
7. 業務邏輯和顯示代碼的分離
8. Eloquent ORM (對象關係映射)實現
9. 隊列(Queue)和調度器(Scheduler)
10. 簡潔的路由
11. Composer 管理依賴關係
12. Blade 模板引擎
13. 完整的文檔
14. 活躍社區
詳情請參考 : https://www.chainnews.com/zh-hant/articles/115049261584.htm
目前PHP最多人使用也最受歡迎的框架就是laravel了 , 讓我們趕快來學吧 !
2. Laravel的框架模型
MVC設計模式
在介紹 Laravel 的 MVC 模型之前,先簡單說明一下 MVC 的觀念,因為 Laravel 並不是一個符合真正 MVC 設計模式的框架。
MVC 是一種設計模式,是眾多設計模式中的一種。根據 Wiki 上的說明[1],正確的 MVC 實作是,View 和 Model 必須以觀察者模式實作,也就是當 Model 的資料有所改變時,會通知 View 來做出反應。而 Laravel 的模型中並沒有這麼做,所以它其實嚴格來說並不符合 MVC 設計模式,我們只能說它是借用將 Model(資料)、View(畫面)和 Controller(控制器)分離這個概念,來實作的網頁框架。如果有興趣,可以自行找資料做更深入的研究。
看這張圖就可以馬上了解 Laravel 的模型是如何傳遞訊息及資料。
- 當使用者輸入網址送出請求時,Router 會分配這個網址由哪個 Controller 來處理。
- Controller 會透過 Model 取得資料。Model 負責處理和資料庫的互動。
- Controller 在取得資料後,會將資料送給 View,這個 View 會被 Blade 樣板系統轉換成靜態的 HTML 文件,最後送回給瀏覽器,瀏覽器將解析這個 HTML 頁面後的畫面呈現給使用者。
只要懂了這四個主要機制是如何互相合作的,各自的任務是什麼,就能夠快速上手 Laravel 了。
3. Laravel目錄結構
App 目錄
app 目錄,正如你預期的那樣,放置應用程式的核心程式碼。我們會深入探討這個目錄。然而,幾乎所有應用程式中的類別都會放在這個目錄。
大部分你撰寫的應用程式會存放於 app 目錄中。預設情況下,這個目錄使用命名空間 App 並藉由 Composer 自動載入(採用 PSR-4 自動載入標準)。
app 目錄附帶許多個額外的目錄,例如:Console、Http 和 Providers。可以將 Console 和 Http 目錄試想為提供 API 進入應用程式的核心。HTTP 協定和 CLI 都是跟應用程式進行互動的機制,但實際上並不包含應用程式邏輯。換句話說,它們是兩種簡單地釋出指令給應用程式的方法。Console 目錄包含你全部的 Artisan 指令,而 Http 目錄包含你的控制器、中介層和請求。
當你使用 Artisan 指令 make 產生類別的時候,其他的目錄才會被建立到 app 目錄下。例如執行 make:job 指令產生任務類別時,app/Jobs 目錄才會出現在目錄中。
在 app 目錄中的很多類別都可以透過 Artisan 指令產生,要檢視所有有效的指令,可以在終端機中執行 php artisan list make 指令。
Console 目錄
Console 目錄包含應用程式所有自定義的 Artisan 指令,這些指令類別可以使用 make:command 指令產生。該目錄中有你的控制台核心(註冊自定義的 Artisan 指令)和已定義的排程任務。
Events 目錄
Events 目錄預設不存在,會在你使用 event:generate 或 make:event 指令以後才會被建立。如你所料,此 Events 目錄是用來放置事件類別的。事件可以被用於當指定動作發生時,通知你應用程式的其它部分,提供了很棒的靈活性及解耦。
Exceptions 目錄
Exceptions 目錄包含應用程式的異常處理程序,同時也是個處置應用程式丟擲異常的好位置。如果你想自定義異常的記錄和渲染,你應該修改此目錄下的 Handler 類別。
Http 目錄
Http 目錄包含了控制器、中介層以及表單請求等,幾乎所有進入應用程式的請求處理都放在這裡。
Providers 目錄
Providers 目錄包含應用程式的服務提供者。服務提供者在啟動應用程式過程中繫結服務到容器、註冊事件,以及執行其他任務,為即將到來的請求處理做準備。
在新安裝的 Laravel 應用程式中,該目錄已經包含了一些服務提供者,你可以按需新增自己的服務提供者到該目錄。
Bootstrap 目錄
bootstrap 目錄放置啟動框架的 app.php 檔案。這個目錄也放置一個 cache 目錄,其中包含框架為效能最佳化所產生的檔案,像是路由和服務快取的檔案。
Config 目錄
config 目錄,顧名思義的就是放置所有應用程式的設定檔。閱讀所有文件並熟悉所有可用的選項會是個好主意。
Database 目錄
database 目錄放置用來資料庫遷移和資料填充的檔案。如果你希望,你也可以使用目錄來存放 SQLite 資料庫。
Public 目錄
public 目錄放置 index.php 檔案,這是進入應用程式並自動載入設定的所有請求的入口。這個目錄也放置你的前端資源,像是圖片、JavaScript 和 CSS。
Resources 目錄
resources 目錄放置你的視圖以及原生、尚未編譯過的資源,像是 LESS、SASS 或 JavaScript。這個目錄也放置你所有的語系檔案。
Routes 目錄
routes 目錄放置所有為應用程式定義的路由。預設的 Laravel 已包含幾個路由:web.php、api.php、console.php 和 channels.php。
web.php 檔案包含 RouteServiceProvider 在 web 中介層群組中放置的路由,它會提供 Session 狀態、CSRF 保護和 Cookie 加密。如果你的應用程式沒有提供無狀態的 RESTful API,那麼你的所有路由可能會在 web.php 中定義。
api.php 檔案包含 RouteServiceProvider 在 api 中介層群組中放置的路由。它會提供速率限制。這些路由是無狀態的,所以經由這些路由進入應用程式需要 token 進行認證,並且不能存取 Session 狀態。
console.php 檔案是你可以定義所有基於閉包的終端指令的地方。每個閉包綁定一個指令實例,並可以使用簡單的方法來對每個指令的 IO 方法交換資料。就算這個檔案沒有定義 HTTP 路由,它也會根據指令端口(路由)來定義到你的應用程式。
channels.php 檔案是你可以註冊應用程式支援的所有事件廣播頻道的地方。
Storage 目錄
storage 目錄放置你編譯 Blade 模板、檔案形式的 Session 、檔案快取和其他由框架產生的檔案。這個目錄被區分成 app、framework 和 logs 目錄。app 目錄可以被用於儲存任何由應用程式產生的檔案。framework 目錄是被用於儲存框架產生的檔案和快取。最後,logs 目錄放置你的應用程式的記錄檔。
storage/app/public 目錄可被用於儲存使用者產生的檔案,像是個人資料上的頭像,這會被公開存取的。你應該建立 public/storage 連結(symbolic link),然後指到 storage/app/public 這個資料夾,你可以使用 php artisan storage:link 來建立連結
Tests 目錄
tests 目錄放置你的自動化測試。並且已提供一個可以馬上使用的 PHPUnit 測試範例。每個測試類別的字尾都應該加上 Test。你可以使用 phpunit 或 php vendor/bin/phpunit 來執行測試。
Vendor 目錄
vendor 目錄放置你的 Composer 依賴項目。
.env檔案
設定一些較隱密的設定 , 例如資料庫帳號密碼 、 郵件的設定 等等...
詳情請參考 laravel 官網 : https://laravel.tw/docs/5.3/structure
4. Aritsan 指令列
Artisan 是 Laravel 裡的一個指令列介面的名稱。當你在開發你的應用程式時,它提供了許多有用的指令來幫助你開發。它是基於由強大的 Symfony Console 元件來的。你可以使用 list 指令來列出所有可以使用的 Artisan 指令 , 如下圖
php artisan 指令可以快速地建立檔案 , 或者操作laravel的一些重要功能 , 非常的重要~
詳情請看官網 : https://laravel.tw/docs/5.2/artisan
今天先稍微介紹了laravel的一些基礎概念
如果想更深入了解 , 可以到官方網站查詢較深入的說明
那我們下一張節就要開始安裝並且撰寫Laravel ~
留言
張貼留言