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&
称之为单入口模式
项目对外提供的任何功能,都是由某个控制器类的某个方法来实现的。
php_mvc实现步骤五的更多相关文章
- 步骤五 · 4-9 解决getElementsByClassName()兼容性 未解决
前端零基础入门 2019版 / 步骤五 · 4-9 解决getElementsByClassName()兼容性
- php_mvc实现步骤九(登录验证码,退出-登录标记)
shop34-17-登录验证码 验证码的分析 登录:防止暴力破解 论坛:防止灌水水 展示类:被抓取. 需要技术: 图片处理技术. 会话session技术. PHP图片处理技术 – GD 具体操作步骤 ...
- php_mvc实现步骤十
shop34-19-商品添加 功能:添加商品表单 Index.php?p=back&c=Goods&a=add Controller-Action: 新建商品控制器类 Applicat ...
- php_mvc实现步骤八
shop34-10-框架类 框架类(框架初始化类) 将原来入口文件中功能,放在该类中完成,入口文件变得简单,轻量! 将入口文件中的各个功能,由框架类的各个方法,完成: 为了简单化,使用纯静态的类.(看 ...
- php_mvc实现步骤七
shop34-5-登录表单 登录功能分析 功能:登录表单 C控制器-动作 back后台admin控制器loginAction动作完成该功能. Application/back/controller/A ...
- php_mvc实现步骤六
shop34-1-目录布局 存在项目的根目录 shop34 框架代码与应用程序代码划分 框架代码: 在各个应用程序间可以通用的代码. 应用程序代码: 当前项目的业务逻辑实现的代码. 分别创建两个子目录 ...
- php_mvc实现步骤三,四
3.match_mvc MVC 以ecshop的前台为例: 功能一: 首页 购物车数据,商品分类数据,其他的首页需要的数据 功能二: 拍卖活动 购物车数据,商品分类数据,拍卖相关数据 功能三: 团购商 ...
- php_MVC实现步骤二
2.match_split 显示逻辑相分离 将功能强制分成两个部分,显示html文件,和逻辑PHP文件: 要求浏览器请求负责功能的PHP逻辑文件: 该PHP逻辑文件,对需要的显示内容进行载入. 逻辑P ...
- php_MVC实现步骤一
1.Match 基本实现 功能,比赛列表,球队信息 数据表初始化: 比赛列表: 球队一 比分 球队二 比赛时间 韩国 1:2 澳大利亚 15-01-31 17:00 从SQL思考,如何完成上面的查询: ...
随机推荐
- ReactiveX 学习笔记(30)操作符辨析
RxJava: merge/concat/switch RxJS: merge/concat/switch/exhaust RxSwift: merge/concat/switchLatest mer ...
- 用 ThreadPoolExecutor/ThreadPoolTaskExecutor 线程池技术提高系统吞吐量(附带线程池参数详解和使用注意事项)
1.概述 在Java中,我们一般通过集成Thread类和实现Runnnable接口,调用线程的start()方法实现线程的启动.但如果并发的数量很多,而且每个线程都是执行很短的时间便结束了,那样频繁的 ...
- THUPC&CTS 2019 游记
day ? 去THU报了个到. day? THUPC比赛日,三个人都没有智商,各种签到题不会做,被各路神仙吊着打.G题还猜了个假结论,做了好久都不对.最后顺利打铁了. 还顺便去看一下THUAC. da ...
- Centos 7 更换为 阿里云 yum 源
地址: https://opsx.alibaba.com/ 操作步骤: 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentO ...
- Beta冲刺(4/5)
队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 讨论校园百科究竟如何实现,并分配了任务 提交记录(全组共用) 接下来的计划 加快校园百科的进度 准备Beta版本的汇报 还 ...
- ICEM-三棱锥的一种画法
原视频下载地址:https://pan.baidu.com/s/1c4BAqy 密码: nqb4
- Python3爬取王者官方网站英雄数据
爬取王者官方网站英雄数据 众所周知,王者荣耀已经成为众多人们喜爱的一款休闲娱乐手游,今天就利用python3 爬虫技术爬取官方网站上的几十个英雄的资料,包括官方给出的人物定位,英雄名称,技能名称,CD ...
- Service Function Chaining Resource Allocation: A Survey
摘要: 服务功能链(SFC)是未来Internet的一项关键技术. 它旨在克服当前部署模型的僵化和静态限制. 该技术的应用依赖于可以将SFC最佳映射到衬底网络的算法. 这类算法称为"服务功能 ...
- @Conditional 和 @ConditionalOnProperty
@ConditionalOnProperty https://blog.csdn.net/dalangzhonghangxing/article/details/78420057 @Condition ...
- 每天有300W的pv,我们单台机器的QPS为58,大概需要部署几台这样机器?
每天有300W的pv,我们单台机器的QPS为58,大概需要部署几台这样机器? 一.总结 一句话总结: ( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS) 13 ...