码迷,mamicode.com
首页 > Web开发 > 详细

php_mvc实现步骤五

时间:2018-11-02 10:14:51      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:图片   dex   size   mat   同方   常量   逻辑   初始化   模型   

5match_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,aHTML的链接地址中,自动形成好的

技术分享图片

技术分享图片

技术分享图片

Index.phpc分发参数进行处理:

技术分享图片

 测试

 技术分享图片

使用常量存储分发参数

思考

一次请求周期中,请求的控制器名(当前控制器),所请求的动作名(当前动作),是否会发生更改

不会发生更改

如何在语法的层面上,保证在一次请求周期内,当前控制器与当前动作不会发生改变

存储在变量中,不保证。

应该使用常量,进行存储当前控制器及其当前动作保证

Index.php实现:

技术分享图片

基础控制器

增加 所有的控制器提供基础代码控制器类:

Controller

技术分享图片

其他控制器,继承自基础控制器:

技术分享图片

技术分享图片

初始化Content-Type的基础操作

Controller.class.php

技术分享图片

调用

实例化控制器对象时调用,在构造方法中:

Controller.class.php

技术分享图片

逻辑图例

技术分享图片

注意

浏览器的请求地址URL,都是固定的形式:

Index.php?c=Controller&a=action&

称之为单入口模式

项目对外提供任何功能,都是由某个控制器类的某个方法来实现的。

php_mvc实现步骤五

标签:图片   dex   size   mat   同方   常量   逻辑   初始化   模型   

原文地址:https://www.cnblogs.com/ybygb-geng/p/9894358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!