TP框架基础 (二) ---空控制器和空操作
通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建!
【视图模板文件创建】
视图模板文件存放发位置在:

里面没有模板文件
如果我们想要访问Login控制器中的Login方法,首先我们要创建一个Login控制器对应的模板文件夹,该文件夹就对应着Login控制器:

然后在Login文件夹下再创建一个login.html的模板文件来对应Login控制器下的Login方法:

在login.html里面写入要显示的代码:

然后再次请求:

【url地址大小写设置】
默认是不敏感的:
在config.php里边对url大小写敏感进行设置

【空操作和空控制器处理】
空操作:没有指定的操作方法
空控制器:没有指定控制器
http://网址/index.php/Home/User/login
http://网址/index.php/Home/User/hello 空操作
http://网址/index.php/Home/beijing/login 空控制器
空操作:

一般网站处于安全考虑不给用户提示任何错误信息,空控制器:(为了防止对我们的网站进行攻击,看不出用什么做的网站)
“空操作”本质意思:一个对象(控制器)调用本身不存在的方法(空操作就是访问了原来的控制器里没有的操作)
在OOP里边,对象调用本身不存在方法,处于用户体验比较好的角度考虑,我们可以在类里边制作一个魔术方法:function __call();
在tp里面控制器的父类:

父类中有个方法:__call()

所以空操作有两种解决方案:
① 在对应的控制器里边制作一个方法,名称为”_empty”,这个控制器的空操作都会自动执行该方法。(推荐使用)
② 给空操作的名称制作一个同名的模板出来,系统会自动调用


空控制器:(等于访问了一个没有的类)

空控制器:在实例化控制器对象的时候,没有找到指定的类
什么时候实例化控制器对象:ThinkPHP/Library/Think/App.class.php
熟记文件:
index.php 入口文件
ThinkPHP/ThinkPHP.php 框架核心文件
ThinkPHP/Library/Think/Think.class.php 框架核心文件
ThinkPHP/Library/Think/App.class.php 框架应用文件
在App.class.php内部包括控制器对象创建,以及对象调用指定的方法呈现内容:

A()方法是个快捷的方法 用来造对象的
空控制器处理方案:可以再制作一个控制器,名称EmptyController.class.php
在该控制器内部其实只需要制作一个_empty()方法即可。


这样再次请求:

【项目分组】
系统有前台用户操作界面
系统还有后台供公司内部人员使用维护平台、Home文件夹代表前台应用、admin代表后台应用
两者在使用的过程中就是对“控制器”、“视图模板”、“model模型”的操作
为了系统开发方便,及代码部署更加合理,我们的控制器、view视图等前后台文件不要混在起,要在物理结构上给分开


http://网址/index.php/Home/控制器/操作方法 访问Home控制器及制定操作
http://网址/index.php/Admin/控制器/操作方法 访问Admin分组的控制器和操作方法
》Home文件夹代表前台应用
》空操作实际上就是访问了原来的控制器里没有的操作,去操作调用的话,会自动调用这个方法 __call() 这个方法在父类里可以找到
》//空方法
举例:
public function _empty()
{
echo "滚犊子,别乱访问";
}
》访问空控制器,相当于访问一个没有的类
》thinkPHP/Librarary/Think/App.class.php ->App.class.php 框架应用文件,在这个文件里,它会自动的把控制器的对象创建出来,创建的时候调用了一个A方法,这个是tp模板提供的一个快捷方法,用来快速造对象。A('类名')
》创建控制器实例的时候,如果发现没有这个类,会自动判断是否定义了empty控制器
》对空控制器的处理方法:做一个EmptyController.class.php控制器里写_empty()空方法
》项目分组 根据模块来分,前台后台的模块同属一个项目文件夹内,但是互不影响
》》输出的文字如果有乱码,可以在代码中加上:header("Content-Type:text/html; charset=utf-8");
TP框架基础 (二) ---空控制器和空操作的更多相关文章
- TP框架 基础1
php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...
- thinkphp的空控制器和空操作以及对应解决方法
在上篇随笔中我们已经知道了tp框架的四种访问方式,那么当在地址栏输入不存在的操作方法.控制器会怎么样呢? 先看一下定义: 空操作:一个对象(控制器)调用本身不存在的方法 空控制器:在实例化控制器对象的 ...
- TP框架基础2
---恢复内容开始--- [空操作和空控制器处理] 空操作:就没有指定的操作方法 空控制器:没有指定控制器 http://网址/index.php/Home/User/login http://网址/ ...
- thinkphp5空控制器和空操作
thinkphp5空控制器和空操作 一.总结 1.空控制器和空操作用:空控制器和空操作都是为了防止网站上的用户恶意输入,网站上线的话必须加上, 2.空操作:空操作就是在一般的控制器里面加上一个 _em ...
- TP框架基础(三)
[系统常量信息] 获取系统常量信息: 如果加参数true,会分组显示: >系统常量信息里经常用到的是user里的路径 > APP_PATH =>string'./shop/' 项目路 ...
- ThinkPHP3.2 中空方法、空控制器和空模块的设置
ThinkPHP3.2 中空方法.空控制器和空模块的设置 1.空方法设置 问题: 当你访问一个不存在的方法的时候: 如: http://localhost/test/index.php/Home/Us ...
- 【tp5】tp5实现空模块、空控制器、空操作的页面404跳转
写在最开始:本教程适用于tp5路由的[强制模式+半pathinfo模式+pathinfo模式],通用. 比网上的[通过路由去控制空模块更强力.更全面]. PS:路由控制空模块缺点:仅仅在[强制模式下才 ...
- thinkphp5.0 空模块、空控制器、空方法
空模块 'exception_handle' => function(Exception $e){ // 参数验证错误 if ($e instanceof \think\exception\Va ...
- TP框架 ---空控制器和空操作
通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控 ...
随机推荐
- Nginx多种负载均衡策略搭建
背景介绍 上篇介绍了利用Nginx反向代理实现负载均衡,本文详细讲述Nginx下的几种负载均衡策略. 轮询 轮询,顾名思义,就是轮流请求,基于上篇文章的介绍,我们将负载均衡策略聚焦于default.c ...
- ABP开发框架前后端开发系列---(4)Web API调用类的封装和使用
在前面随笔介绍ABP应用框架的项目组织情况,以及项目中领域层各个类代码组织,以及简化了ABP框架的各个层的内容,使得我们项目结构更加清晰.上篇随笔已经介绍了字典模块中应用服务层接口的实现情况,并且通过 ...
- Spring Boot:实现MyBatis动态数据源
综合概述 在很多具体应用场景中,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库.又比如业务A要访问A数据库,业务B要访问B数据库等,都可以使用动态数据 ...
- Hadoop 学习之路(一)—— 分布式文件系统 HDFS
一.介绍 HDFS (Hadoop Distributed File System)是Hadoop下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 2 ...
- 【时间工具】整理下java时间换算专题
首先总结了一下日期转换基础,最常用的两个工具类Date与calender,转换方法如下: package com.zzt.spider; import java.text.SimpleDateForm ...
- 长春理工大学第十四届程序设计竞赛(重现赛)I
I.Fate Grand Order 题目链接:https://ac.nowcoder.com/acm/contest/912/I 题目: Fate Grand Order是型月社发行的角色扮演类手机 ...
- Node.js Windows Example
Firstly, download the msi file from https://nodejs.org/en/ Second, click the msi file to install nod ...
- chromedriver配置
需要先安装chrome浏览器,添加chrome源 sudo vim /etc/yum.repos.d/google-chrome.repo 添加以下内容 [google-chrome] name=go ...
- Product Backlog:终极任务清单
健康的Product Backlog就像一个健康的人那样:整洁有序.组织合理.公开透明.一个按照优先级顺序排好的敏捷Backlog不仅能够简化发版和迭代计划,还能够对团队计划去做的所有工作进行细致规划 ...
- 【HDU - 2102】A计划(bfs)
-->A计划 Descriptions: 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的 ...