首頁 >php框架 >Laravel >Laravel框架中應用程式的體系結構的解析

Laravel框架中應用程式的體系結構的解析

不言
不言原創
2018-07-31 16:36:472742瀏覽
laravel框架被稱為「全端」式框架,因為它處理從網路服務到資料庫管理,直到HTML產生的一切事情,一個垂直整合的web開發環境能為開發者提供更好的體驗。

一個典型的程式設計師透過命令列工具與Laravel交互,產生和管理Laravel專案環境。 Laravel附帶一個名為Artisan的優秀的命令列工具,可以用它來產生框架程式碼和資料庫架構,Artisan能夠處理從資料庫架構遷移到資源和設定管理的一切。

約定優於配置

  Laravel 的有趣的特徵之一,在如何建立web 應用程式上它規定了一些相當嚴重的限制。出人意料的是,這些限制使創建應用程式更加的容易——輕鬆了許多。讓我們來看看為什麼。

  Laravel區別於其他垂直整合開發環境在於它強烈的偏好約定優於配置。而一些 Java,Python 或 PHP 框架往往需要大量的 XML 配置,Laravel在開始的時候幾乎不需要配置(也許只有幾行在PHP)。這種對設定檔的規避行為使其非常獨特,在所有 Laravel 應用程式中可識別的程式碼結構是相同的。

一個專案結構來統治他們所有 !

  這並不奇怪,所有Laravel專案基本上具有相同的目錄結構 ——在其中的每個檔案都有其指定的地方。透過這種約定的目錄結果,可以確保開發者按照「Laravel way」工作。

  圖1.1 顯示了Laravel 專案目錄結構是什麼樣子:

## 

圖1.1 Laravel 專案目錄結構

  就如你看到這樣,laravel下面只包含了4個資料夾,這4個資料夾下面有一些子資料夾,這個豐富的子資料夾在第一次看到是不是有壓力?我會逐一介紹。我們大部分的開發工作都會在app/資料夾下面進行。

  以下是各個資料夾和檔案的基本介紹:

#

 

  如同上述的,/app是所有的樂趣產生的地方,讓我們更深入的看看這個目錄的結構。

  圖1.2 顯示/app資料夾的詳細資料:

 

圖1.2 app 資料夾詳細資料

  以下是詳細介紹:

#頂層資料夾

作用

#app

包含了網站的controllers(控制器),models(模型),views(視圖)和assets(資源)。這些是網站運行的主要程式碼,你會將你大部分的時間花在這些上面。

bootstrap

# 用來存放系統啟動時所需的文件,這些文件會被如index.php這樣的檔案呼叫。

public

#這個資料夾是唯一外界可以看到的,就是必須指向你web伺服器的目錄。它含有laravel框架核心的引導檔案index.php,這個目錄也可用來存放任何可以公開的靜態資源,如css,Javascript,images等。

vendor

# 用來存放所有的第三方程式碼,在一個典型的Laravel應用程序,這包括Laravel原始碼及其相關,並含有額外的預包裝功能的插件。

檔案的資料夾

作用

#/app/config/

#設定應用程式的執行階段規則、資料庫、 session等等。包含大量的用來更改框架的各個方面的設定檔。大部分的設定檔中傳回的選項關聯PHP數組。

/app/config/app.php

各種應用程式層級設定,即時區、 區域設定(語言環境)、 偵錯模式和獨特的加密金鑰。

/app/config/auth.php

控制在應用程式中如何進行身份驗證,即身份驗證驅動程式。

/app/config/cache.php

如果應用程式利用快取來加快回應時間,要在此配置功能。

/app/config/compile.php

在這裡可以指定一些額外類,去包含由'artisan optimize'指令聲稱的編譯檔。這些應該是被包括在基本上每個請求到應用程式中的類別。

/app/config/database.php

包含資料庫的相關設定信息,即預設資料庫引擎和連接資訊。

/app/config/mail.php

#為電子郵件寄件引擎的設定文件,即SMTP 伺服器,From:標頭

#/app/config/session.php

控制Laravel怎樣管理使用者sessions,即session driver, session lifetime。

/app/config/view.php

#模板系統的雜項配置。

/app/controllers

#包含用於提供基本的邏輯、資料模型互動以及載入應用程式的視圖檔案的控制器類別。

/app/database/migrations/

包含一些PHP 類,允許Laravel更新目前資料庫的架構並同時保持所有版本的資料庫的同步。遷移檔案是使用Artisan工具產生的。

/app/database/seeds/

包含允許Artisan工具用關聯數據來填入資料庫表的PHP 檔。

/app/lang/

#PHP 文件,其中包含使應用程式易於本地化的字串的陣列。預設情況下目錄包含英語語言的分頁和表單驗證的語言行。

/app/models/

模型是代表應用程式的資訊(數據)和操作資料的規則的一些類別。在大多數情況下,資料庫中的每個表將對應應用中的一個模型。應用程式業務邏輯的大部分將集中在模型中。

/app/start/

#包含與Artisan工具以及全球和本地上下文相關的自訂設定。

/app/storage/

#該目錄儲存Laravel各種服務的臨時文件,如session, cache,  compiled view templates。這個目錄在web伺服器上必須是可以寫入的。目錄由Laravel維護,我們可以不關心。

/app/tests/

#該資料夾給你提供了一個方便的位置,用來做單元測試。如果你使用PHPUnit,你可以使用Artisan工具一次執行所有的測試。

/app/views/

#該資料夾包含了控制器或路由使用的HTML模版。請注意,這個資料夾下你只能放置模版檔。其他的靜態資源檔案如css, javascript和images檔案應該放在/public資料夾下。

/app/routes.php

#

這是您的應用程式的路由文件,其中包含路由規則,告訴 Laravel 如何將傳入的請求連接到路由處理的閉包函數、 控制器和操作。該文件還包含幾個事件聲明,包括錯誤頁的,可以用於定義視圖的composers。

/app/filters.php

#此檔案包含各種應用程式和路由篩選方法,用來改變您的應用程式的結果。 Laravel 具有存取控制和 XSS 保護的一些預定義篩選器。

  花了很多心思在建立和命名資料夾上,得到的就是一個具有良好的檔案系統的應用程式。

  在這裡你得到了什麼:MVC

模型-視圖-控制器(MVC)

  讓我們進入Laravel應用工作的高級別概述。你可能已經注意到了標準的Laravel應用程式結構由一個應用程式目錄app/,它含有三個子目錄:models/,views/和controllers/。這就透露了Laravel遵循model-view-controller(MVC)架構模式,就是強制將輸入到展示邏輯關係的「業務邏輯」與圖形使用者介面(GUI)分開。就Laravel web應用程式而言,業務邏輯通常由像用戶,部落格文章這樣的資料模型組成。 GUI只是瀏覽器中的網頁而已。 MVC設計模式在網頁開發領域很流行。

  MVC模式的3個元件:

  • #模型(model)

  • 「檢視)

Laravel框架中應用程式的體系結構的解析

#控制器(controller)

  [註] 原作者在這裡詳細介紹了MVC三個組成部分,我這裡由於篇幅就不介紹了。

Laravel元件

一個典型的Laravel應用程式包含上面提到的MVC元件,如下圖:

  當與Laravel互動時,瀏覽器會傳送一個請求,web伺服器接收到請求並且傳給Laravel路由引擎。 Laravel路由接收到請求,然後重新導向給基於路由的URL模式的適當的控制器類別方法。   然後控制器類別接手。在某種情況下,控制器會立即呈現出一個視圖,它是一個被轉換成HTML並送回瀏覽器的模版。更常見的動態網站,控制器與模型交互,這是一個PHP對象,它表示應用程式(如用戶、部落格文章)中的一個元素,並負責與資料庫進行通信的。呼叫模型後,控制器則呈現最終視圖( HTML,CSS和圖像),並返回完整的網頁到使用者的瀏覽器。

###  Laravel促進了這樣的概念——模型、視圖和控制器,應透過儲存這些元素在不同的目錄中的單獨的程式碼檔案中來保持相當的獨立性。這就是Laravel目錄結構發揮了作用。 ######  像MVC這樣的設計模式的產生,就是為了讓開發者的生活更加的輕鬆。這就是Laravel比那些不用任何模式的PHP厲害的地方。如果這種討論很抽象,現在,不用擔心!當你開始Laravel工作,你都不會意識到你是在設計模式中工作。過一段時間後,就會變得自然了。 #########資料模型#########  資料模型是任何應用程式的基礎,它描述了應用程式的業務邏輯。任何一塊的資料都是用資料庫表來表示的。 Laravel提供了一些技術來簡化對資料庫的存取。 ######  Laravel透過將資料庫中的表格行轉換成能被輕鬆操縱的PHP對象,來連接應用程式的資料模型和資料庫表。它還使您能夠執行業務規則,描述在應用程式中不同的資料模型之間的關係等。例如,一個人的家庭關係可以用Laravel Eloquent OR / M描述如下:#########
class Person extends Eloquent
{
    public function mother()
    {
        return $this->belongsTo('Mother');
    }

    public function father()
    {
        return $this->belongsTo('Father');
    }

    public function spouse()
    {
        return $this->hasOne('Spouse');
    }

    public function sisters()
    {
        return $this->hasMany('Sister');
    }

    public function brothers()
    {
        return $this->hasMany('Brother');
    }
}
######### 以上就是這篇文章的全部內容了,更多laravel內容請關注###laravel框架入門教學。 #########相關文章推薦:########Laravel框架中Autoloader模組的程式碼分析#########相關課程推薦:####### ##2017年最新的五個Laravel影片教學推薦#######

以上是Laravel框架中應用程式的體系結構的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn