通过之前的学习我们知道了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");

访问空方法解决办法->在控制器里面创建 _empty 方法

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller
{
public function _empty()
{
echo"网址输入错误"; //空方法的处理办法
}
}

访问控控制器解决方法->创建一个名为EmptyController.class.php的控制器文件,在该控制器下创建一个 _empty 方法

<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller
{
public function _empty()
{
echo"网页不存在,请检查网址是否正确"; //空方法的处理办法
}
}

跨控制器调用方法

1,   加载类的方法  $class=new class;      $class->function;

2,   A方法             $class=A("控制器");   $class->function;

3,   R方法             R("控制器/方法");

跨模块调用方法

1,   A方法             $class=A("模块/控制器");   $class->function;

2,   R方法             R("模块/控制器/方法");

命名空间相关知识点

1.系统目录下根命名空间是ThinkPHP\Library下面的文件夹名称命名的

2.模块的根命名空间是以模块名命名的

在定义命名空间的时候需要从根写起例如:Home\Controller 例如:Think\Model

如果要使用某个类文件,引入该类命名空间的时候,使用use关键字,后面写该类的命名空间 后面加上 "\文件名"

如果不想引入命名空间:在造类的对象的时候可以使用\(初始命名空间)来找到对应的类

例如:new \Think\Page(30);

TP框架 ---空控制器和空操作的更多相关文章

  1. thinkphp的空控制器和空操作以及对应解决方法

    在上篇随笔中我们已经知道了tp框架的四种访问方式,那么当在地址栏输入不存在的操作方法.控制器会怎么样呢? 先看一下定义: 空操作:一个对象(控制器)调用本身不存在的方法 空控制器:在实例化控制器对象的 ...

  2. 【tp5】tp5实现空模块、空控制器、空操作的页面404跳转

    写在最开始:本教程适用于tp5路由的[强制模式+半pathinfo模式+pathinfo模式],通用. 比网上的[通过路由去控制空模块更强力.更全面]. PS:路由控制空模块缺点:仅仅在[强制模式下才 ...

  3. thinkphp5空控制器和空操作

    thinkphp5空控制器和空操作 一.总结 1.空控制器和空操作用:空控制器和空操作都是为了防止网站上的用户恶意输入,网站上线的话必须加上, 2.空操作:空操作就是在一般的控制器里面加上一个 _em ...

  4. thinkphp5.0 空模块、空控制器、空方法

    空模块 'exception_handle' => function(Exception $e){ // 参数验证错误 if ($e instanceof \think\exception\Va ...

  5. ThinkPHP3.2 中空方法、空控制器和空模块的设置

    ThinkPHP3.2 中空方法.空控制器和空模块的设置 1.空方法设置 问题: 当你访问一个不存在的方法的时候: 如: http://localhost/test/index.php/Home/Us ...

  6. TP框架基础 (二) ---空控制器和空操作

    通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控 ...

  7. TP3.2框架,实现空模块、空控制器、空操作的页面404替换||同步实现apache报错404页面替换

    一,前言 一.1)以下代码是在TP3.0版本之后,URL的默认模式=>PATHINFO的前提下进行的.(通俗点,URL中index.php必须存在且正确) 代码和讲解如下: 1.空模块解决:ht ...

  8. 第一零三天上课 PHP TP框架下控制器的方法分离

    (1)配置信息 修改配置文件->Config.php (配置后,原先的控制方法无效) 'ACTION_BIND_CLASS' => TRUE, // 控制器方法分离 (2)在Control ...

  9. Tp5 空模块、空控制器、空方法的处理

    1.空模块处理 如果是开启了路由 可直接找到route.php文件,具体的位置看个人放置的位置,在里面新增一个语句 '__miss__' => ['portal/index/errorMsg', ...

随机推荐

  1. python 线程之 threading(四)

    python 线程之 threading(三) http://www.cnblogs.com/someoneHan/p/6213100.html中对Event做了简单的介绍. 但是如果线程打算一遍一遍 ...

  2. 12 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例

    EL应用      自定义一个标签,实现两个字符串的相加 1回顾      1.1servlet生命周期           init(ServletConfig)           service ...

  3. iOS 两行代码解决数据持久化

    在实际的iOS开发中,有些时候涉及到将程序的状态保存下来,以便下一次恢复,或者是记录用户的一些喜好和用户的登录信息等等. 这就需要涉及到数据的持久化了,所谓数据持久化就是数据的本地保存,将数据从内存中 ...

  4. containing block

    1(position:static和relative) 它的包含块由它最近的块级.单元格(table cell)或者行内块(inline-block)祖先元素创建. 2.position:fixed ...

  5. 创建DOTA2本地数据库(一)

    在APP中,用本地数据库好于频繁的联网去获取相关数据.我使用SQLite作为本地的数据库,比较轻巧. 英雄 首先先建立英雄的数据库,暂时我先只设置ID,name,loaclized_name这三种,我 ...

  6. javascript平时小例子⑧(导航置顶效果)

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  7. 深入浅出Android App耗电量统计

    前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有.平时在手机“设置- 电量”看到的数据 就是系统调用内 ...

  8. 第一章-第十一题(请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人)--By 侯伟婷

    从邹欣老师的<构建执法:现代软件工程>一书中,我们得到有关这些名词的起源的信息是软件工程的概念是1968年第一次提出的[1].而在一篇专访Margaret Hamilton的报道中,我们通 ...

  9. finnal 评论 II

    新蜂团队:俄罗斯方块界面设计给人眼前一亮的感觉,很喜欢他们界面的颜色搭配.功能上实现了俄罗斯方块的基本功能,并且没有bug.最重要的是游戏有自己的创新点在里面,很喜欢游戏的瞄准功能.总的来说项目完成的 ...

  10. php遍历目录

    function zx($dir){ if(is_dir($dir)){ $filesnames = scandir($dir); foreach ($filesnames as $name) { i ...