MVC新手指南

2022-08-11 13:24:13 字數 2089 閱讀 1501

本文感謝東西提供模型-檢視-控制器(mvc)可能是近年來網路程式設計圈子裡最常被提及的模式之一。目前與網路應用開發沾邊的人聽到和看到這個字母縮寫的次數肯定不下百次。 今天,我們將詳細闡述一下mvc的含義,以及它變的如此流行的原因。

古老的歷史…。這兩個開發框架給稍後誕生的數百框架打上了深深的烙印。

網路應用中的mvc模式

模型-檢視-控制器架構模式背後的思想非常簡單:我們的應用程式中必須區分下面這些職責:

應用程式被分成了三個主要的部分,每個部分負責掌管不同的任務。下面讓我們看看詳細的解釋以及乙個例子。

控制器

控制器掌管著使用者的請求(當使用者點選圖形使用者介面(gui)上的元素執行操作時,控制器會收到http get或者post請求)。它的主要功能就是呼叫並協調需要的資源/物件來執行使用者請求。通常控制器會為任務呼叫合適的模型,以及選擇合適的檢視。模型

模型是指運用於資料之上的資料規則和資料內容,它一般對應於應用程式所要管理的物件。在軟體系統中,任何事物都可以被抽象成可以對其以某種方式進行處理的資料模型。應用程式中的使用者,資訊以及圖書是什麼?它們只是一堆必須按照對應規則處理的資料(日期不能是未來的日期,電子郵件有特定的格式,名字的長度不能超過多少字元等等)

模型給控制器提供了乙個使用者請求內容對應的資料表達(比如資訊,書,相簿)。不管我們如何向使用者展示,這個資料模型都不會變。這也是我們為什麼可以隨意選擇使用哪個檢視來展示資料的原因。

模型包含我們應用程式邏輯中最重要的組成部分,這些邏輯運用於我們要處理的問題過程中。控制器更多的是包含應用程式自身的內部組織邏輯(更像管家)。

檢視

檢視提供了展示模型資料的不同方式。它可能是資料填充的模板。檢視可以有多個,而控制器則決定使用哪個檢視。乙個網路應用通常由許多控制器,模型和檢視組成。控制器可以被看成是乙個主控制器,用於接收使用者的所有請求,然後在呼叫特定的控制器來處理不同的情況。

讓我們看乙個例子

控制器(books_controller.php)以http get或者post的方式接收到使用者的請求[1](我們也可以有乙個主控制器,比如index.php 來接收請求,然後它再呼叫ooks_controller.php)

控制器檢查請求以及對應的引數,然後呼叫模型(book_model.php),請求模型返回幻想類的圖書[2]。模型負責從資料庫中調取資訊 [3],如有需要它可以加入過濾和邏輯,然後返回圖書列表。

控制器使用恰當的檢視來將這些資料展示給使用者[6-7],如果使用者還選擇了特定**,對應的視**件也會被選上等等。

mvc的好處是什麼

我們使用mvc的乙個最明顯好處就是它將檢視展示和應用邏輯清晰的分離開來。

對不同使用者以及不同裝置型別的支援一直是當下的乙個常見問題。來自台式電腦和手機的請求所得到的檢視應該是不相同的。模型會返回完全相同的資料,但是不同的地方是控制器會選擇使用的視**件來展示資料(我們可以把它看作是不同的模板)。

除了將檢視從業務邏輯中分離開外,mvc的分離也降低了大型應用設計的難度。**也更具結構性,因此也更容易維護,測試和重用。

但是為什麼要框架呢?

我們現在需要做的事情就是為list操作建立乙個檢視(至少是乙個)。這個檢視將使用html**,並且還包含一些php**來遍歷模型提供的 books陣列。

title

author

price

<?php echo $book['book']['author']; ?>

<?php echo $book['book']['price']; ?>

我們已經學習了當今最常用的架構模式mvc,我們需要注意,當我們在程式設計界提及的模式時,我們指的是可以用來解決手中問題的靈活架構。我們會發現實際使用會給我們看到的結構帶來變動。但最為重要的是,這種模式會幫助我們氣息的區分程式各部分的職責,便於程式維護,**重用以及測試。

我們已經見識了使用mvc框架的好處,它給我們提供了乙個基本的mvc骨架,以及許多有用的功能,提高了我們的效率,讓開發過程更加輕鬆。

Bash新手指南

bash新手指南 xalasys.com 目錄 介紹1.本指南由來 2.誰應該閱讀此書?3.新版本和取得方法 4.歷史修訂 5.貢獻 6.反饋 7.版權資訊 8.你需要什麼?9.本文件約定 10.本文件組織結構 1.bash和bash指令碼 1.1.常用的shell程式 1.1.1.shell的普遍...

nginx 新手指南

官網 可以使用 nginx 的幫助命令檢視可以使用的命令 nginx h 或者 nginx root gray sbin nginx h nginx version openresty 1.11.2.2 usage nginx hvvttq s signal c filename p prefix ...

nginx新手指南

記錄nginx在centos上的安裝,開啟過程。其實也就是翻譯兩篇nginx上的文件的部分。install beginner s guide nginx name nginx repo baseurl gpgcheck 0 enabled 1 usr sbin nginx 這是開啟nginx的檔案 ...