ThinkPHP空操作与命名空间】的更多相关文章

命名空间:相当于一个虚拟的目录 正常管理文件使用文件夹--物理区分 TP框架的初始命名空间是:ThinkPHP\Library 在TP框架下命名空间里面使用\代表的是初始命名空间(ThinkPHP\Library) 1.系统目录下根命名空间是ThinkPHP\Library下面的文件夹名称命名的 2.模块的根命名空间是以模块名命名的 在定义命名空间的时候需要从根写起例如:Home\Controller 例如:Think\Model 如果要使用某个类文件,引入该类命名空间的时候:使用use关键字,…
空操作是指访问不存在的路径: 解决方法:在控制其中创建 _empty方法 空控制器是指访问存在的控制器: 解决方法:创建EmptyController控制器 命名空间: 初识命名空间是Library:用\表示 初识命名空间下有两块根命名空间,1是Library下的文件夹,2是程序的模块文件夹 给类定义命名空间,否则类不能使用 在定义命名空间的时候需要从根写起例如:Home\Controller 创建类对象 $page = new \Home\FenYe\Page(10,5);…
1.空操作 空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化. http://网址/index.php/Home/Main/login http://网址/index.php/Home/Main/hello  空操作 出现页面: 显示的错误信息过于详细,为安全以及优化页面起见,实行空操作 1.做一个_empty()方法.要在子类里面写,不要再父类里(推荐使用) function _empty() { ech…
空操作和空模块很有实用意义,他有些类似于PHP虚拟机自定义的404页面,利用这个机制我们可以更好的实现URL和错误页面的一些优化. 一.空模块: ​         很好理解,就是当你执行不存在模块的时候,thinkphp会自动寻找该模块,当找不到该模块的时候,Thinkphp会自动定义空模块下的index方法. <?php class EmptyControl​ler extends Controller{ public function index(){ echo '<script>…
1关于TP中空操作和路由问题 <?php function test(){ $content="test demo @云峰天下"; $pattern='/@(\S+)\s/'; $content=preg_replace($pattern,'<a href="'.__APP__.'/user/index/uname/\\1">\\1</a>'); return $content; } 最近在做一个微博,有一块是微博内容@用户加链接,跳转…
所谓的空操作和空控制器,简而言之就是系统中不存在该方法或控制器,导致系统报错(本文版本3.2.3). 正确URL(测试环境):  http://oa.com/index.php/admin/public/login  访问如下: 一:空操作处理 修改方法为loginw时报错如下: 系统默认内置报错机制:1.用户体验差  2.严重安全隐患. 查看父类控制器文件Controller.class.php,发现如下代码: 意思是说,如果调用的方法不存在但定义了_empty()方法,就会去执行_empty…
访问空方法解决办法->在控制器里面创建 _empty 方法 <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function _empty() { echo"网址输入错误"; //空方法的处理办法 } } 访问控控制器解决方法->创建一个名为EmptyController.class.php的控制器文件,在该…
上篇<ThinkPHP空操作和空控制器的处理>中,在处理空操作时修改了父类Controller.class.php中代码,不到万不得已不能 修改基类控制器中的原码,此时可在子类与父类之间,创建一个中间控制器CommonController.class.php通过链式继承来实现. 此时先删除先前基类Controller.class.php中定义的_empty方法,运行效果如下: 然后修改子类的继承类为CommonController即可实现空操作,如下: 运行如下: 这样就可以不修改基类,通过子…
一.“空操作”本质意思:一个对象(控制器)调用本身不存在的操作方法 一般网站处于安全考虑不给用户提示任何错误信息 在tp里面控制器controller.class.php里有个_call()方法 所以空操作有两种解决方案: ①     在对应的控制器里边制作一个方法,名称为”_empty”,这个控制器的空操作都会自动执行该方法.(推荐使用) function _empty() //解决方案一 { echo "网页不存在,请检查浏览器信息!"; } ②     给空操作的名称制作一个同名…
原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问这个类不存在的方法,那么它会去访问”魔术方法__call()” 用户访问一个不存在的操作—>解决:给每个控制器都定义个_empty()方法来处理 第二个解决方法:定义一个空操作 [空模块处理] 我们使用一个类,但是现在这个类还没有被include进来. 我们可以通过自动加载机制处理__autoloa…
原文:thinkPHP 空模块和空操作.前置操作和后置操作 详细介绍(十四) 本章节:介绍 TP 空模块和空操作.前置操作和后置操作 详细介绍 一.空模块和空操作 1.空操作 function _empty($name){ $this->show("$name 不存在 <a href='__APP__/Index/index'>返回首页</a>"); } 2.空模块(EmptyAction.class.php的文件) class EmptyAction e…
在上篇随笔中我们已经知道了tp框架的四种访问方式,那么当在地址栏输入不存在的操作方法.控制器会怎么样呢? 先看一下定义: 空操作:一个对象(控制器)调用本身不存在的方法 空控制器:在实例化控制器对象的时候,没有找到指定的类 首先,在Application文件下新建Ceshi模块,并在Ceshi模块下按照Home模块建立相同的文件夹,如下图: 1)在Controller文件夹下新建Login控制器: <?php namespace Ceshi\Controller; use Think\Contr…
真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳定的运行阶段 项目停止运行(旧项目的人员已经全部离职,新人开发新项目) 问题: 1. 多人开发项目,分工不合理,(html   php   mysql) 2. 代码风格不一样,后期维护十分困难 3. 项目生命周期十分短,项目生命没有延续性,造成资源浪费.人员浪费 4. 项目不能很好适应客户需求,牵一…
本章节:介绍 TP 空模块和空操作.前置操作和后置操作 具体介绍 一.空模块和空操作 1.空操作 function _empty($name){ $this->show("$name 不存在 <a href='__APP__/Index/index'>返回首页</a>"); } 2.空模块(EmptyAction.class.php的文件) class EmptyAction extends Action{ function index(){ //$thi…
空操作 空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化. 例如,下面我们用空操作功能来实现一个城市切换的功能.我们只需要给CityAction类定义一个_empty (空操作)方法: <?php class CityAction extends Action{ public function _empty($name){ //把所有城市的操作解析到city方法 $this->city($name); }…
通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控制器中的Login方法,首先我们要创建一个Login控制器对应的模板文件夹,该文件夹就对应着Login控制器: 然后在Login文件夹下再创建一个login.html的模板文件来对应Login控制器下的Login方法: 在login.html里面写入要显示的代码: 然后再次请求: [url地址大小写…
thinkphp5空控制器和空操作 一.总结 1.空控制器和空操作用:空控制器和空操作都是为了防止网站上的用户恶意输入,网站上线的话必须加上, 2.空操作:空操作就是在一般的控制器里面加上一个 _empty()方法 3.空控制器:空控制器就是新建一个名为Error的控制器,空控制器里面也要有空方法 4.thinkphp支持命令行:thinkphp支持命令行,命令行创建的控制器可以多几个方法,和路由一一对应 5.空控制器和空操作里面的操作:都是直接重定向到index页面 二.thinkphp5空控…
TP框架几个重要文件:index.php,ThinkPHP.php,Library/Think/Think.class.php,Library/Think/App.class.php,conversion.php 空操作就是当用户访问不存在的方法,在控制器里声明一个_empty方法,这个方法会被自动调用,它是通过父控制Controller里的__call方法实现的. 当访问不存在的控制器的时候,要在Controller目录下新建一个Empty控制,这个控制器只需要一个_empty方法.…
在浏览器中输入tp框架入口文件的地址,如图 要注意,localhost/后面跟的是www的下一级,tp文件的上一级,因为我直接把tp文件做成了www目录的下一级,所以我写的地址localhost后面跟的就是tp 打上目录后回车,就会出来tp的主页面,如图 再随便打上一个没有的操作方法,如 打出的这个页面,暴露了很多信息,不太安全,所以我们要控制住,. 像这种操作本来没有的,叫做空操作 要改变这种,我们可以提供一种方法 从这个目录下找 可以在这个文件中查找双下划线打头的call方法 在这个位置搜到…
通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控制器中的Login方法,首先我们要创建一个Login控制器对应的模板文件夹,该文件夹就对应着Login控制器: 然后在Login文件夹下再创建一个login.html的模板文件来对应Login控制器下的Login方法: 在login.html里面写入要显示的代码: 然后再次请求: [url地址大小写…
原文:thinkphp学习笔记8-命名空间 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间的路径和类库文件的目录一致,就可以实现类的自动加载,例如Org\Util\File类的定义为 namespace Org\Util; class File { } 其所在的路径是ThinkPHP/Library/Org/Util/File.class.php,我们实例化该类写法如下: $class…
写在最开始:本教程适用于tp5路由的[强制模式+半pathinfo模式+pathinfo模式],通用. 比网上的[通过路由去控制空模块更强力.更全面]. PS:路由控制空模块缺点:仅仅在[强制模式下才生效,pathinfo模式下有错误] 1.这里只讲tp5(5.0.18)的空模块跳转,空控制器和空操作官网有. 来个正确的空模块处理吧: 首先找到think\App.php,备份,然后修改: 找到[throw new HttpException(404, 'module not exists:' .…
一,前言 一.1)以下代码是在TP3.0版本之后,URL的默认模式=>PATHINFO的前提下进行的.(通俗点,URL中index.php必须存在且正确) 代码和讲解如下: 1.空模块解决:http://localhost:8095/index.php/Home/index/index 输入http://localhost:8095/index.php/Home23/index/index  会报错,解决 ->>> 1)在公共配置文件添加: 'MODULE_ALLOW_LIST' …
Thinkphp CURD操作php中实例还对象即可操作 (目录) 1.Add 1 调式程序 3 调出显示页面Trace信息 3 Dump 的含义 4 2.数据库查询 4 1.直接使用字符串进行查找 4 2.使用数组的方式进行查询 5 3.表达式的方式进行查询 5 Php中的表达式定义 6 4.区间查询 6 5.混合用法  6 6. 统计用法 7 3.更新操作 8 4.删除操作 8 1.Add $data=array( 'user_name'=>'xiaoming','nick_name'=>…
一.调试模式(入口文件:index.php) define('APP_DEBUG', true);  //调试模式 define('APP_DEBUG', FALSE);  //运行模式 开启日志信息(在模块配置文件中): 二.空控制器.空操作() 当系统找不到控制器(操作)会定位到空控制器(操作):EmptyController->_empty() 三.跨控制器调用方法 1.直接实例化 2.A() $obj->display(“Manager/ManagerTest1”) //调用的是模版…
[一]概论 (1)定义 空操作指系统在找不到指定操作方法的时候.会定位到空操作方法 / 控制器来执行,利用这个机制,我们可以实现错误页面的自定义和URL的优化 (2)场景 常用于错误页面的自定义 (3)一般的系统自带的错误页面分两种 ①调试 / 开发阶段:会显示出错误信息.错误位置.当前TP版本 ②生成阶段:显示错误提示.TP版本.安全性相对于之前有所提高,但用户还是较差 (4)空操作 针对以上情况,这时便可以用空操作的机制进行错误页面美化 (5)说明------针对方法和控制器 1. 空操作方…
空控制器的概念是指当系统找不到请求的控制器名称的时候,系统会尝试定位空控制器(EmptyController),利用这个机制我们可以用来定制错误页面和进行URL的优化. 大理石平台价格表 现在我们把前面的需求进一步,把URL由原来的 http://serverName/index.php/Home/City/shanghai/ 变成 http://serverName/index.php/Home/shanghai/ 这样更加简单的方式,如果按照传统的模式,我们必须给每个城市定义一个控制器类,然…
ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操 作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理.采用 PDO方式,目前包含了Mysql.SqlServer.PgSQL.Sqlite等数据库的支持. 如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式. 一.配置文件定义 二.方法配置 三.模型类定义 配置参数参考 一.配置文件定义 常用的配置方式是在应用目录或者模块目录下面的…
<?php namespace Admin\Controller; use Think\Controller; class DengLuController extends Controller { public function test() { //echo "这是测试的" $this->assign("a","world"); $this->show(); } } //这里面只有test方法,如果访问空的方法时,例如在浏览…
thinkPHP如果要对数据库操作,一般来说首先要做的是在配置文件中链接数据库,然后用M方法实例化一张表,然后就是对表的操作了 可以开启调试功能查看程序执行的sql语句: 1.开启调试功能(默认是已经开启过的) define('APP_DEBUG',true) 2.设置配置文件,开启页面trace(注意:如果没有在控制器里输出模板,不会出现调试小图标,即要写:$this->display();) 'SHOW_PAGE_TRACE'=>TRACE 查询操作:例如: (1)基本的where语句查询…