Laravel – 專案結構

想要使用 Laravel 來開發我們的專案,自然就必需要知道這個專案目錄的結構,這邊會為各位分為兩個部份介紹,一個是 Laravel 的專案根目錄;另外一個是根目錄下的 application 目錄。

根目錄結構


打開專案的目錄後,可以看到根目錄下有這麼幾個檔案與目錄(有 “/” 開頭的皆是目錄)*

  1. /application
  2. /bundles
  3. /laravel
  4. /public
  5. /storage
  6. artisan
  7. paths.php

1./application

整個 Laravel 專案中最需要我們著墨的地方,舉凡設定(config)、路由(routing)、MVC 模型的三大區塊盡皆在此,這個目錄結構會在下文介紹。

2./bundles

Bundles 是放置我們自己撰寫的擴充的或是取自官網上彙整眾多善良的強者們所提供之 Laravel 應用,安置好後,就要使用工匠指令 – artisan 來將之擴充到我們的專案裡。另外,當未來我們接觸以及使用的 bundles 越來越多,相信大家可以留意到,每一個 bundle 的結構與 application 目錄是大同小異的,只是會依 bundle 的需求,不需要那麼多的目錄。簡單來說,原生的 application 本身就是一個完整的 bundle!

3./laravel

Laravel 框架的核心!所有的元件皆可在 Laravel API 中找到說明。

4./public

還記得在剛放好我們 Laravel 時,在沒有多做任何設定之下,要在網址列中打上 “http://localhost/public” 嗎?嗯!這個目錄就是專案我們剛開始的起點,存放著所有對外資源的目錄,諸如 CSS、JavaScript 以及圖片等等皆被存放在此。

5./storage

這是專案存放如 Session、Cache 這類暫存資源用的目錄。

6.artisan

工匠指令,已經在先前的 “Laravel – 工匠(artisan)” 一文中為各位介紹過了,這是 Laravel 框架裡很重要的一個功能!

7.paths.php

這個檔案定義了框架所有目錄的路徑,讓我們可以使用 path('目錄名稱') 這樣的指令方式,取得該路徑下我們所需要的內容。

 

 

Application 目錄結構


Applicaiton 目錄是未來我們最需要著墨的目錄,他除了是我們自己專案最主要的應用程式的結構外,更是我們 bundle 的最完整呈現。再來,我們就先來看看他有哪些目錄以及檔案。

  1. /config
  2. /controllers
  3. /language
  4. /libraries
  5. /migrations
  6. /models
  7. /tasks
  8. /tests
  9. /views
  10. bundles.php
  11. routes.php
  12. start.php

1./config

雖然 Laravel 專案在一開始的使用可以不做任何設定就上線,但我們總不會只為了開一個靜態網頁的站台就用 Laravel 框架來架站吧。所以,一些我們專案所需要用到的設定,像是語系、編碼、資料庫連結…等皆被放在這個目錄裡,。

2./controllers

顧名思意,這個目錄就是放著 MVC 模型中的 C – 控制(controller) 邏輯了。

3./language

語系檔案,Laravel 框架的語系是採用文字格式,先用目錄做各區域語系的區隔,再依所需要的檔案存放在裡面,預設是英語系(“en”)。轉換語法的設定在 config 目錄下的 application.php 檔案中之 language ,設定值需與目錄名稱相同。

4./libraries

Libraries 也是放擴用功能的目錄,他和 Bundles 最大的不同是,這裡要放的是某特定功能,屬於單一的物件類型,放在這裡的類別不用再安裝,因為 Laravel 框架有個 auto-loading 的功能會將之自動掃入。

5./migrations

定義資料表架構(table schema),可以把這個當做我們專案資料表的版本控制。利用工匠指令: php artisan migrate:make [migration_name] 就能夠將我們定義好的資料表架構(指令範令中的migration_name),建立到資料庫中。

6./models

MVC 模型中的 M,就是我們的商業邏輯(business logic),基本上就是定義著我們要從資料庫取出的資料物件、經由 web service 要傳出的物件…等。原則上,也是搭配著 Laravel 框架中  Eloquent ORM 對資料庫進行存取,他和 libraries 一樣,都是在包含在  auto-loading 之中。

7./tasks

建立自定義可以使用工匠指令執行的任務。

8./tests

Laravel 框架整合了 PHPUnit 方便我們對專案應用程式進行單元測試,所以我們可以直接參考PHPUnit 文件來撰寫我們的單元測試,在全新的專案目錄中已經有一個 example.test.php 的基本架構範例。

9./views

HTML 的樣版(template),也就是 MVC 模型中的 V。而樣版除了原始的 HTML 格式外,Laravel 框架提供了 Blade Template Engine ,讓我們可以用比較簡潔的方式撰寫樣版檔案,而這些檔案只要的副檔名改為 .blade.php ,例如 index.blade.php,樣版引擎就會自動幫我們編譯了,想要了解更多的內容,說明文件 – Blade Template Engine 自然是首選嘍。

10.bundles.php

這個檔案讓我們使用 key-value 的陣列格式,將已存於專案中的某個 bundel 定義進來使用。

11.routes.php

路由設定,接收使用者端來的請求,再根據我們給予的設定調用對應的應用回應。若是請求錯誤或是不存在則會回應 404 或 500 的錯誤回饋。

12.start.php

這個檔案為整個應用程式的起始,在這裡啟動了設定檔、設定了要自動載入(auto-loader)的目錄…等動作。

*此專案結構為 Laravel 3.2 版

Loading Facebook Comments ...

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *