ThinkPHP空操作和空控制器的处理】的更多相关文章

所谓的空操作和空控制器,简而言之就是系统中不存在该方法或控制器,导致系统报错(本文版本3.2.3). 正确URL(测试环境):  http://oa.com/index.php/admin/public/login  访问如下: 一:空操作处理 修改方法为loginw时报错如下: 系统默认内置报错机制:1.用户体验差  2.严重安全隐患. 查看父类控制器文件Controller.class.php,发现如下代码: 意思是说,如果调用的方法不存在但定义了_empty()方法,就会去执行_empty…
原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问这个类不存在的方法,那么它会去访问”魔术方法__call()” 用户访问一个不存在的操作—>解决:给每个控制器都定义个_empty()方法来处理 第二个解决方法:定义一个空操作 [空模块处理] 我们使用一个类,但是现在这个类还没有被include进来. 我们可以通过自动加载机制处理__autoloa…
1.空操作 空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化. http://网址/index.php/Home/Main/login http://网址/index.php/Home/Main/hello  空操作 出现页面: 显示的错误信息过于详细,为安全以及优化页面起见,实行空操作 1.做一个_empty()方法.要在子类里面写,不要再父类里(推荐使用) function _empty() { ech…
TP框架几个重要文件:index.php,ThinkPHP.php,Library/Think/Think.class.php,Library/Think/App.class.php,conversion.php 空操作就是当用户访问不存在的方法,在控制器里声明一个_empty方法,这个方法会被自动调用,它是通过父控制Controller里的__call方法实现的. 当访问不存在的控制器的时候,要在Controller目录下新建一个Empty控制,这个控制器只需要一个_empty方法.…
一.“空操作”本质意思:一个对象(控制器)调用本身不存在的操作方法 一般网站处于安全考虑不给用户提示任何错误信息 在tp里面控制器controller.class.php里有个_call()方法 所以空操作有两种解决方案: ①     在对应的控制器里边制作一个方法,名称为”_empty”,这个控制器的空操作都会自动执行该方法.(推荐使用) function _empty() //解决方案一 { echo "网页不存在,请检查浏览器信息!"; } ②     给空操作的名称制作一个同名…
一.调试模式(入口文件:index.php) define('APP_DEBUG', true);  //调试模式 define('APP_DEBUG', FALSE);  //运行模式 开启日志信息(在模块配置文件中): 二.空控制器.空操作() 当系统找不到控制器(操作)会定位到空控制器(操作):EmptyController->_empty() 三.跨控制器调用方法 1.直接实例化 2.A() $obj->display(“Manager/ManagerTest1”) //调用的是模版…
在上篇随笔中我们已经知道了tp框架的四种访问方式,那么当在地址栏输入不存在的操作方法.控制器会怎么样呢? 先看一下定义: 空操作:一个对象(控制器)调用本身不存在的方法 空控制器:在实例化控制器对象的时候,没有找到指定的类 首先,在Application文件下新建Ceshi模块,并在Ceshi模块下按照Home模块建立相同的文件夹,如下图: 1)在Controller文件夹下新建Login控制器: <?php namespace Ceshi\Controller; use Think\Contr…
真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳定的运行阶段 项目停止运行(旧项目的人员已经全部离职,新人开发新项目) 问题: 1. 多人开发项目,分工不合理,(html   php   mysql) 2. 代码风格不一样,后期维护十分困难 3. 项目生命周期十分短,项目生命没有延续性,造成资源浪费.人员浪费 4. 项目不能很好适应客户需求,牵一…
通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控制器中的Login方法,首先我们要创建一个Login控制器对应的模板文件夹,该文件夹就对应着Login控制器: 然后在Login文件夹下再创建一个login.html的模板文件来对应Login控制器下的Login方法: 在login.html里面写入要显示的代码: 然后再次请求: [url地址大小写…
上篇<ThinkPHP空操作和空控制器的处理>中,在处理空操作时修改了父类Controller.class.php中代码,不到万不得已不能 修改基类控制器中的原码,此时可在子类与父类之间,创建一个中间控制器CommonController.class.php通过链式继承来实现. 此时先删除先前基类Controller.class.php中定义的_empty方法,运行效果如下: 然后修改子类的继承类为CommonController即可实现空操作,如下: 运行如下: 这样就可以不修改基类,通过子…