MVC第一課

來源:互聯網
上載者:User

標籤:load   載入   系統   修改   代碼   相對   純粹   串連數   檔案上傳   

MVC設計模式 MVC概念

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種商務邏輯、資料、介面顯示分離的方法組織代碼,將商務邏輯聚集到一個組件裡面,在改進和個人化定製介面及使用者互動的同時,不需要重新編寫商務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化使用者介面的結構中。

 

 

MVC三大組件 模型

Model:模型

應用程式中用於處理應用程式資料邏輯的部分。

 

凡是跟資料操作有關的內容都屬於資料邏輯:只要與SQL指令有關,那麼都屬於模型(資料邏輯)

 

在MVC中:所有的SQL指令都應該存在於模型組件中。

視圖

View:視圖

應用程式中處理資料顯示的部分。

 

視圖:template(模板),用來承載資料的容器,通常是HTML檔案(顯示[HTML],美化[CSS]和效果[JavaScript])

控制器

Controller:控制器

應用程式中處理使用者互動的部分。

 

控制器:也叫作模組(Module),是用來與使用者直接接觸的指令碼代碼(瀏覽器直接提交給PHP的指令碼對象),判斷使用者操作的邏輯性。

 

控制器:在需要的時候,可以調用模型來進行資料處理(資料庫操作)

控制器:在需要的時候,可以調用視圖來進行資料顯示(加工美化)

 

 

MVC模式意義

MVC的本質是將代碼進行分離:顯示資料部分(View),處理業務部分(Controller)和資料操作部分(Model)

 

1、 符合人類分工協作的模式(思維模式)

2、 利於代碼的維護:前端(HTML)與後端(PHP)的分離

 

代碼發展史

1、 PHP與HTML嵌入到一起:混合開發階段

優點:效率高

缺點:代碼重用性低(不利於維護)

2、 PHP與HTML分離開來(兩個指令碼):模板技術

優點:前後端開發人員分離,利於代碼的維護

缺點:效率相對於混編較低,PHP後端代碼複用性比較低

3、 PHP中業務部分與資料操作部分再次分離:MVC思想

優點:代碼分離完整,利用代碼重複利用

缺點:伺服器要操作多個檔案完成一個請求(效率最低)

 

 

效率低:指的是相對於混編模式,從電腦的高效運作來說,再對比網路延遲,效率的降低對於使用者而言是感受不到。

MVC工作原理 PHP指令碼工作原理

瀏覽器—》發起請求—》伺服器PHP接收請求—》PHP處理(商務邏輯判斷,資料庫操作,顯示資料)--》返回給瀏覽器

 

 

MVC工作原理

在MVC設計思想中:至少有三個檔案才能服務一次請求(控制器,模型,視圖)

1、使用者通過瀏覽器發起請求

2、PHP接收請求:對應的指令碼必須是控制器指令碼

2.1 控制器判斷使用者是否操作恰當

2.2 控制器調用模型擷取資料

2.3 控制器調用視圖顯示資料(輸出)

3、PHP返回請求響應結果:控制器

 

 

MVC模式的工作流程

將MVC思想設計的項目,按照完整的請求走一遍

 

1、 使用者瀏覽器輸入URL:PHP指令碼(控制器)

2、 伺服器控制器指令碼接收請求

2.1 商務邏輯判斷

2.2 調用對應的模型:一個模型負責一張表對應的所有SQL操作

2.2.1 模型需要公用代碼

面向過程:封裝公用函數

物件導向:用類來封裝公用代碼(串連認證):模型繼承公用模型

2.2.2 模型封裝每一種資料邏輯:一個邏輯一個方法

2.3 控制器拿到資料(校正)

2.4 控制器載入模板(視圖)來顯示資料:顯示的過程就是輸出

3、 返回結果給使用者

項目單一入口實現

 

項目單一入口:一個項目只有一個入口(使用者唯一可以通過瀏覽器進行訪問的檔案)

 

1、 一個項目只要定義一個入口檔案:index.php/admin.php/home.php

所有的使用者都只能允許訪問index.php

2、 “入口檔案”來決定去訪問對應的哪個控制器

進行很多的判斷(系統初始化):單獨成立一個檔案

入口檔案:載入並運行初始設定檔案

3、 初始設定檔案中來決定訪問哪個對應的控制器

3.1 字元集設定

3.2 常量設定(目錄)

3.3 系統設定

3.4 自動載入設定

3.5 初始化URL(從“URL”中擷取資料):控制器和控制器類中的具體方法

3.6 載入設定檔

3.7 分發控制器

4、 控制器處理MVC工作流程

4.1 商務邏輯判斷

4.2 調用模型操作資料庫

4.3 調用視圖顯示資料

5、 結果最終是一層層返回

Index.php->初始設定檔案->控制器->模型和視圖

模型和視圖->控制器->初始設定檔案->index.php->返回瀏覽器

 

 

建立目錄結構 規劃架構目錄

網站根目錄下:應該有哪些對應的檔案夾和檔案

1、 入口檔案:index.php

2、 應用程式目錄:App檔案夾,存放與當前應用有關的內容(MVC對應的檔案)

3、 核心目錄:Core檔案夾,存放一些核心檔案的(初始化,公用核心檔案)

4、 Web資來源目錄:Public檔案夾,存放的就是當前應用所需要的一些資源(樣式、JS和圖片等)

5、 外掛程式目錄:Vendor檔案夾,存放的是一些外部提供好的完整功能的指令碼(Smarty,驗證碼,圖片上傳等)

6、 配置目錄:Config檔案夾,存放設定檔(有可能內部再分層)

7、 檔案上傳目錄:Upload檔案夾,存放使用者上傳的檔案

 

 

規劃應用程式目錄

應用程式目錄:MVC對應的檔案的儲存

 

通常:一個網站分為前台和後台

 

1、 建立兩個對應的檔案夾,分離前後台業務:Home/Back,Home/Admin

2、 對應的前後台之下,都會有對應的MVC,在對應的檔案夾下,再次建立分層檔案夾Controller/Model/View

注意:很多時候,前後台業務不一樣,但是資料操作基本差不多,基於這種情況,會將Model檔案夾提升,在App目錄下,與對應的前後台檔案夾同級

 

規劃Web資來源目錄

Web資來源目錄:管理對應的樣式,圖片和js效果,在Public目錄下,建立三個對應的檔案夾即可。

 

入口檔案

 

入口檔案:index.php,本質要做的事情非常簡單

 

1、 實現入口設定:安全限定(只有訪問index.php入口檔案才有可能訪問其他檔案夾中的資源)

原理:在入口處定義一個常量,然後在其他檔案中判斷常量是否存在:存在即可訪問,不存在不允許訪問。

 

 

2、 引入系統初始設定檔案

 

3、 讓系統初始設定檔案執行

 

搭建運行環境

 

1、 搭建一個虛擬機器主機

 

2、 重啟apache

 

3、 修改本機Hosts檔案

 

應用程式初始化類檔案

 

要求

1、 檔案需要使用命名空間(所有類檔案)

2、 檔案需要許可權判定(所有類檔案)

3、 一個功能應該是一個單獨的方法

 

 

1、 run方法:運行方法

2、 初始化字元集:initCharset

 

3、 初始化目錄常量:initDirConst

 

4、 初始化系統設定:initSystem

控制對應的錯誤顯示層級,以及是否顯示

Ini_set(選項,值)

 

5、 初始化設定檔:initConfig

 

6、 初始化URL:initURL

 

7、 初始化自動載入:initAutoload

7.1 載入方式自訂:Core/Controller/Model/Vendor

 

7.2 利用spl_autoload_resiter來進行自動載入

 

7.3 所有的類都是由命名空間控制的:系統尋找類的時候會帶著空間尋找(不是一個純粹的類名):在載入的時候,一定要去除空間

 

 

8、 分發控制器

 

控制器組件

功能:商務邏輯處理,調用模型擷取資料,調用視圖顯示資料

 

控制器調用模型

 

 

控制器調用視圖顯示資料

 

模型組件

模型:串連資料庫,進行SQL操作,資料解析

 

建立模型:一張表(資料)對應一個模型

 

 

模型要做的事情:串連認證(?),組織SQL指令,執行SQL指令,解析SQL執行結果

 

 

視圖組件

視圖:本質就是顯示資料(已有資料)

 

增加視圖檔案

 

 

在視圖中解析資料

 

MVC第一課

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.