php_mvc实现步骤五
5、match_controller
控制器層典型實現
控制器類
依據功能的相關性,將一系列相關的功能,使用一個控制器類來處理,而該控制器的每個方法,就對因某個功能。
注意:控制器是按照功能劃分的。(而不是像模型一樣,按表來劃分)
比賽相關功能控制器類:
前端控制器(請求分發器,入口文件)
以上的listAction()操作應該如何被調用呢?
實例化,并掉用方法即可!
在哪里實例化或調用呢?
增加一個可以實例化并調用控制器方法的文件。
邏輯流程:
動作action分發參數:a
如何做到一個前端控制器,可以調用一個控制器類不同方法動作呢?
在請求前端控制器index.php時,向其傳遞a參數,表示當前所需要執行的動作名,例如:
功能:比賽列表:
Index.php?a=list
功能:比賽刪除:
Index.php?a=remove
Tip:鏈接地址的形成,應該在HTML代碼中就確定好了,再存在一個默認動作即可!
Index.php判斷a參數,執行相應的動作即可:
測試:
?
控制器controller分發參數:c
如果需要執行其他控制器的某個動作應該處理處理前端控制器?
在請求前端控制器index.php時,向其傳遞c參數,表示當前所需要執行的控制器類名,例如:
比賽的列表動作:
Index.php?c=Match&a=list
球隊的信息動作
Index.php?c=Team&a=info&id=TID
c,a在HTML的鏈接地址中,自動形成好的
Index.php對c分發參數進行處理:
?測試:
?
使用常量存儲分發參數
思考:
在一次請求周期中,所請求的控制器名(當前控制器),和所請求的動作名(當前動作),是否會發生更改?
不會發生更改!
如何在語法的層面上,保證在一次請求周期內,當前控制器與當前動作不會發生改變?
存儲在變量中,不能保證。
應該使用常量,進行存儲當前控制器及其當前動作,保證
Index.php中實現:
基礎控制器
增加為?所有的控制器提供基礎代碼控制器類:
Controller
其他控制器,繼承自基礎控制器:
初始化Content-Type的基礎操作
Controller.class.php
調用:
在實例化控制器對象時調用,在構造方法中:
Controller.class.php
邏輯圖例
注意:
瀏覽器的請求地址(URL),都是固定的形式:
Index.php?c=Controller&a=action&
稱之為單入口模式
項目對外提供的任何功能,都是由某個控制器類的某個方法來實現的。
轉載于:https://www.cnblogs.com/ybygb-geng/p/9894358.html
總結
以上是生活随笔為你收集整理的php_mvc实现步骤五的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅析分布式数据库中间件DDM
- 下一篇: php实现异步请求