自定義MVC框架 封裝控制器層

2021-09-04 11:31:04 字數 2157 閱讀 5746

控制器的作用是作為模型於檢視之間的橋梁,細分的話有兩個

建立模型類時時按照表劃分的,也就是說一張表對應乙個模型類

控制器類應該建立在controller 目錄下,每個類就是乙個控制器,我們稱為控制器類

控制器檔案的命名規範

1)功能名稱+controller.class.php

2)控制器名稱也採用大駝峰寫法,如usercontroller、newstypecontroller

3)控制器中的方法使用小駝峰寫法,如 selectaction、getinsertidaction

4)如上,方法名稱後面加上action字尾

建立乙個控制器,用於管理所有的使用者資料

在controller下建立usercontroller.class.php 檔案

在控制器中編寫方法,用於向users表中新增資料

<?php 

class userscontroller

}

我們發現,控制器中的addaction 方法呼叫了模型類中的users_add方法

這就是我們前面所說的:模型類負責與資料庫互動,控制器負責呼叫模型類

為了更加清晰的理解控制器與模型的關係,在控制器中再編寫乙個用於查詢的方法

public function selectaction()

控制器中的selectaction 方法呼叫了模型中的方法獲取資料庫中的資料,這也是控制器呼叫模型類獲取資料的經典案例

為了檢視效果,我們執行當前的程式,呼叫控制器的方法,看看結果

問題來了?我們在瀏覽器中怎麼輸入位址呢?直接訪問控制器類?絕對不行的。

解決方案是,在**根目錄下建立乙個php檔案,可以命名為 index.php

我們在瀏覽器中訪問這個檔案,然後在這個檔案中,例項化控制器類,再呼叫控制器中的方法

require_once 'controller/userscontroller.class.php';

$controller = new userscontroller();

$controller->addaction();

檢視資料庫,一條記錄被儲存到資料庫中、

修改**,改為呼叫select方法查詢資料庫的資料

require_once 'controller/userscontroller.class.php';

$controller = new userscontroller();

$controller->selectaction();

先不忙著仿照userscontroller類建立另外的兩個控制器

上面**中,我們在控制器中引入了模型中的factory.class.php檔案

require_once 'model/factory.class.php';
但是觀察一下當前的目錄結構

發現,userscontroller和factory.class.php 分布在兩個目錄下,所以按照正常的寫法應該是

require_once '../model/factory.class.php';
但這種寫法是無法被正確載入的

原因在於,index.php 是我們在瀏覽器中訪問的檔案,在這個檔案中引入了 userscontroller.class.php

require_once 'controller/userscontroller.class.php';
我們講過,所謂引入和包含,其實就是將這個檔案中的**全部拷貝乙份到當前檔案中,也就是拷貝到了index.php 中,所以,userscontroller中引入其他檔案時,應該時站在index.php的角度,所以使用下面的方式引入

require_once 'model/factory.class.php';
仿照userscontroller 類編寫另外兩個類的**

簡單封裝自定義MVC框架

自定義mvc框架結構及其使用方法 一,什麼是mvc框架 mvc框架全名是 model 模型 controller 控制器 view 視 件 所構成的一種開發框架,是一種典型的 軟體設計典範,用一種業務邏輯,資料,顯示相分離的方法組織 其好處是將業務邏輯聚集到乙個部件裡面,在改進和指定個性化頁面的同時...

簡單封裝自定義MVC框架

自定義mvc框架結構及其使用方法 一,什麼是mvc框架 mvc框架全名是 model 模型 controller 控制器 view 視 件 所構成的一種開發框架,是一種典型的 軟體設計典範,用一種業務邏輯,資料,顯示相分離的方法組織 其好處是將業務邏輯聚集到乙個部件裡面,在改進和指定個性化頁面的同時...

自定義tabBar控制器

一 控制器部分 import jrtabbarconroller.h import jrtabbar.h inte ce jrtabbarconroller property nonatomic,weak uiviewcontroller currentvc end implementation j...