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实现步骤五的更多相关文章

  1. 步骤五 · 4-9 解决getElementsByClassName()兼容性 未解决

    前端零基础入门 2019版 / 步骤五 · 4-9 解决getElementsByClassName()兼容性

  2. php_mvc实现步骤九(登录验证码,退出-登录标记)

    shop34-17-登录验证码 验证码的分析 登录:防止暴力破解 论坛:防止灌水水 展示类:被抓取. 需要技术: 图片处理技术. 会话session技术. PHP图片处理技术 – GD 具体操作步骤 ...

  3. php_mvc实现步骤十

    shop34-19-商品添加 功能:添加商品表单 Index.php?p=back&c=Goods&a=add Controller-Action: 新建商品控制器类 Applicat ...

  4. php_mvc实现步骤八

    shop34-10-框架类 框架类(框架初始化类) 将原来入口文件中功能,放在该类中完成,入口文件变得简单,轻量! 将入口文件中的各个功能,由框架类的各个方法,完成: 为了简单化,使用纯静态的类.(看 ...

  5. php_mvc实现步骤七

    shop34-5-登录表单 登录功能分析 功能:登录表单 C控制器-动作 back后台admin控制器loginAction动作完成该功能. Application/back/controller/A ...

  6. php_mvc实现步骤六

    shop34-1-目录布局 存在项目的根目录 shop34 框架代码与应用程序代码划分 框架代码: 在各个应用程序间可以通用的代码. 应用程序代码: 当前项目的业务逻辑实现的代码. 分别创建两个子目录 ...

  7. php_mvc实现步骤三,四

    3.match_mvc MVC 以ecshop的前台为例: 功能一: 首页 购物车数据,商品分类数据,其他的首页需要的数据 功能二: 拍卖活动 购物车数据,商品分类数据,拍卖相关数据 功能三: 团购商 ...

  8. php_MVC实现步骤二

    2.match_split 显示逻辑相分离 将功能强制分成两个部分,显示html文件,和逻辑PHP文件: 要求浏览器请求负责功能的PHP逻辑文件: 该PHP逻辑文件,对需要的显示内容进行载入. 逻辑P ...

  9. php_MVC实现步骤一

    1.Match 基本实现 功能,比赛列表,球队信息 数据表初始化: 比赛列表: 球队一 比分 球队二 比赛时间 韩国 1:2 澳大利亚 15-01-31 17:00 从SQL思考,如何完成上面的查询: ...

随机推荐

  1. favicon.ico设置,HtmlWebpackPlugin插件配置多页面等

  2. Spring+mybatis+PageHelper

    为了更简单的实现数据库分页,我们不探讨自己手动修改sql语句分页,这里关于PageHelper自己配置是出现的问题进行记录下: 我采用的是Maven代码托管,在pom.xml进行如下配置: <! ...

  3. EntityFramework6 学习笔记(三)

    你可能要问,我用EF不就为了避免写SQL吗?如果要写SQL我不如直接用ADO.NET得了.话虽然这么说没错,可有些时候使用EF操作数据还是有一些不方便,例如让你根据条件删除一组记录,如果按照正常的流程 ...

  4. mybatis框架-SqlSession会话操作数据库的两种方式

    1.通过SqlSession实力来直接执行已经映射的sql语句 例如,查询整个用户表中的信息 在UserMapper.xml中编写sql语句 编写测试方法: 注意:这里使用的selectList方法: ...

  5. [Javascript] Use requestIdleCallback to schedule JavaScript tasks at an optimal time

    JavaScript is single-threaded, which can present some problems when creating an interactive user exp ...

  6. LOJ P10016 灯泡 题解

    每日一题 day50 打卡 Analysis 用初中学的相似推一波式子,再用三分一搞就好了. #include<iostream> #include<cstdio> #incl ...

  7. BZOJ 3672: [Noi2014]购票 树上CDQ分治

    做这道题真的是涨姿势了,一般的CDQ分治都是在序列上进行的,这次是把CDQ分治放树上跑了~ 考虑一半的 CDQ 分治怎么进行: 递归处理左区间,处理左区间对右区间的影响,然后再递归处理右区间. 所以, ...

  8. js傻瓜式制作电子时钟

    js傻瓜式制作电子时间 使用到的知识点 setInterval函数 构建函数new Date if判断 demo: //css样式请自行设置 <span id="timer" ...

  9. 浏览器端使用less

    一.思路 ①less无法在浏览器中直接使用,浏览器不能识别 ②通过less解析插件less.js(JavaScript插件)可以把less文件解析成css代码(下载地址) 二.具体应用 ①less.j ...

  10. 一个禁用mac内置键盘的方法

    一个禁用mac内置键盘的方法 强大的 karabiner, 非常好用. 可以直接在有外接键盘连接的情况下, 禁用掉内置键盘 另外一个方法是启用mac的 鼠标键, 感觉用处不是很大, 修饰健并没有被禁用 ...