成人快手app下载

  • 河南網站建設-鄭州網站建設-上海網站建設-SEO優化-網絡營銷-經典美文

  • 專注網站建設 服務熱線: 13061801310

當前位置:東東網 > 近期動態 > 網站建設觀點 > 正文

MVC開發模式與ThinkPHP5.0

發布時間:2020-04-26 | 發布者: 東東網| 瀏覽次數:

成人快手app下载 THhinkPHP5.0是基于MVC(模型-視圖-控制器)方式來組織的,MVC的全稱是Model View Controller,是模型-視圖-控制器的縮寫,是一種軟件設計典范,用一種業務邏輯,數據,界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里,在改進和個性化定制界面以及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特地發展起來用于映射傳統的輸入,處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。而MVC開發模式是一種使用MVC設計創建Web應用程序的模式。

傳統的Web開發中,我們將數據的處理和數據顯示寫在一起,模型和視圖是直接關聯的,視圖直接從模型獲取數據并顯示,代碼復雜,維護困難,不利于團隊分工,開發效率低

成人快手app下载 傳統開發模式類似如下代碼:

而使用MVC開發時,情況則發生了變化,模型和視圖依舊負責數據處理和數據顯示,但它們之間并不直接進行數據交換,而是借助控制器完成,控制器首先從模型中獲取數據,然后根據數據的類型或者格式等選擇合適的視圖進行顯示,從而達到模型與視圖的完全分離,而是由控制器完成數據獲取與展示

Model是應用程序中用以處理應用程序數據邏輯的部分,通常模型對象負責在數據庫中存取數據,View是應用程序中處理數據顯示的部分,通常視圖是一句模型數據創建的。Controller是應用程序中處理用戶交互的部分。通常控制器負責從視圖中讀取數據控制用戶輸入并向模型發送數據。

ThinkPHP的應用目錄:

 

 

成人快手app下载 我們可以注意到在public目錄下有一個index.php,該文件是應用的入口文件,幾乎所有的PHP MVC框架都會采用單一入口(網站的所有訪問都會經過該文件)進行項目訪問,ThinkPHP也不例外。入口文件主要完成以下事情:

1. 定義框架路徑,項目路徑

2. 定義調試模式和應用模式(可選)

3. 定義全局常量(可選)

4. 加載框架入口文件

Index.php代碼如下:

 

 

當我們加載一個初始的thinkphp5框架時,顯示出的是一個“歡迎使用ThinkPHP!”

大致的加載流程如下:

1. Web服務器加載默認首頁

成人快手app下载 2. Index.php加載ThinkPHP.php,框架開始運行

3. 當未指定模塊,控制器和動作時,框架采用默認配置:Home模塊,Index控制器,index動作

4. 根據APP_PATH找到Application目錄,再根據模塊名,控制器名和動作名找到Home目錄下的IndexController.class.php,并執行其中的index方法。

ThinkPHP中的控制器:

作為MVC模式中最核心的控制器,起著溝通視圖和模型的作用一個好的MVC架構中,View永遠不應該直接操作Model,而應該通過View->Controller->Model的方式進行操作。一方面減少了耦合程度,另一方面之后對View進行重構時不會影響到Model。

一般來說ThinkPHP的控制器就是一個類,該類位于模塊/Controller文件夾下,而操作指的是控制器的一個public方法,以下截圖是最近筆者在做的一個項目的實例:(v1是版本號便于版本控制)

 

 

由上圖我們可以發現控制器的定義非常簡單,只需滿足兩個條件:(1)文件是一個php類并存放在模塊/Controller文件夾下(2)繼承ThinkPHP的Controller及其子類。

ThinkPHP中的視圖:

成人快手app下载 視圖功能由thinkView類配合視圖驅動(模板引擎)類一起完成,目前的內置模板引擎包括PHP原生模板和Think模板引擎

成人快手app下载 因為新版的控制器可以無需繼承任何的基礎類,因此在控制器中如何使用視圖取決于你怎么定義控制器。

成人快手app下载 1. 繼承thinkcontroller類

成人快手app下载 如果你的控制器繼承了thinkController類的話,則無需自己實例化圖類,可以直接調用控制器基礎類封裝的相關視圖類的方法。如:

fetch渲染模板輸出

display渲染內容輸出

成人快手app下载 assign模板變量賦值

engine初始化模板引擎

成人快手app下载 2. 助手函數:

如果只是需要渲染模板輸出可以使用系統提供的助手函數view

成人快手app下载 return view('hello',['name'=>'thinkphp'])

成人快手app下载 助手函數調用格式:

成人快手app下载 view('[模板文件]'[,'模板變量(數組)'][,模板替換(數組)])

ThinkPHP中的模型:

模型類:ThinkModel配合數據庫中間層ThinkDb實現了完整的ORM功能,包括CURD和ActiveRecord實現。

成人快手app下载 基礎模型類Model的設計非常靈活,無需進行任何模型定義,就可以進行相關數據表的ORM和CURD操作,只需要在封裝單獨的業務邏輯的時候,模型類才必須是被定義的。

新版采用了PHP的Trait特性實現了模型的動態組裝,可以更加靈活的實現模型的擴展

當我們需要使用模型時,首先我們需要在database.php配置文件中進行相關的設置:

而模型的定義方面,如果我們僅僅需要實現對數據表的CURD操作的話,實際上根本不需要定義模型類,直接實例化基礎模型類即可。 只有當你需要額外定義模型的屬性或者方法邏輯的時候,才需要額外定義模型類。模型類一般位于模塊的 model 目錄下面,類名通常與數據表的名相同

例如:

 

當我們需要使用模型時,我們需要在對應的控制器中引入該模型類,使用相關的查詢語句,核心ThinkModel除了基本的CURD和AR查詢之外, 還提供了一些統計函數、getField方法,及動態查詢方法,使用如下:

$User = D('User');

$User->count();

成人快手app下载 $User->getField('name');

$User->getByName('thinkphp');

成人快手app下载 $User->getFieldByName('thinkphp','name');

 

轉載請標注:東東網——MVC開發模式與ThinkPHP5.0