模仿thinkphp访问控制器的方法
2014-07-14 14:09
176 查看
Thinkphp,作为中mvc架构里比较简单的php框架,其本身特殊的访问控制器的方法让人爱不释手,也给我这个web初学者很大的震撼——接口竟然可以做的那么简洁明了。
Thinkphp里,访问控制器的方法是下面这样的: localhost/app/index.php/Controller/Method。更形象的来说就是,假如你在app/Lib/Action文件夹下新建了一个叫做ApiAction.class.php的文件,里面有个public的方法,名字叫做getInformation。那么,访问这个方法的url就可以这样写:http://localhost/app/index.php/Api/getInformation。当你把这段url放到浏览器的地址栏里,thinkphp就会运行ApiAction.class.php里的getInformation方法。
由于知道了thinkphp有如此方便的访问函数的方法,一度对此爱之有加。前段时间,做大作业的时候,我被分配到写前后台衔接的接口。前期谈论的时候,自己就想着用thinkphp完成接口的编写,这样写出来的接口文件既简洁又易懂。然而,由于后台不是我写的,而写后台的伙伴用的是原生的php访问mysql数据库的方法。在thinkphp里,虽然允许原生的方法,但是访问数据库必须new一个空的model,然后用model来访问数据库,而且访问出来的结果跟原生的不一样。因为这点,我想到:我需要的只是thinkphp访问函数的这种方法,其他的特性不需要。因此,我何不自己查一下,弄个类似的形式就可以了。
果然,通过百度和谷歌,我找到pathinfo,这个关键字。接着,再从php.net查阅pathinfo这个方法,以及$_SERVER的属性,想出一个解决这个问题的解决方案。当我想出解决方案的时候,猛然间再看到那条访问函数的url,顿时理解了为什么thinkphp需要一个入口文件,也更加理解为什么叫“入口”。
这里把关键代码共享出来,以供参考
将这句代码放到你的www文件夹下面,然后试图访问一下,你就知道其中道理了。
Thinkphp里,访问控制器的方法是下面这样的: localhost/app/index.php/Controller/Method。更形象的来说就是,假如你在app/Lib/Action文件夹下新建了一个叫做ApiAction.class.php的文件,里面有个public的方法,名字叫做getInformation。那么,访问这个方法的url就可以这样写:http://localhost/app/index.php/Api/getInformation。当你把这段url放到浏览器的地址栏里,thinkphp就会运行ApiAction.class.php里的getInformation方法。
由于知道了thinkphp有如此方便的访问函数的方法,一度对此爱之有加。前段时间,做大作业的时候,我被分配到写前后台衔接的接口。前期谈论的时候,自己就想着用thinkphp完成接口的编写,这样写出来的接口文件既简洁又易懂。然而,由于后台不是我写的,而写后台的伙伴用的是原生的php访问mysql数据库的方法。在thinkphp里,虽然允许原生的方法,但是访问数据库必须new一个空的model,然后用model来访问数据库,而且访问出来的结果跟原生的不一样。因为这点,我想到:我需要的只是thinkphp访问函数的这种方法,其他的特性不需要。因此,我何不自己查一下,弄个类似的形式就可以了。
果然,通过百度和谷歌,我找到pathinfo,这个关键字。接着,再从php.net查阅pathinfo这个方法,以及$_SERVER的属性,想出一个解决这个问题的解决方案。当我想出解决方案的时候,猛然间再看到那条访问函数的url,顿时理解了为什么thinkphp需要一个入口文件,也更加理解为什么叫“入口”。
这里把关键代码共享出来,以供参考
$path = pathinfo($_SERVER['PHP_SELF']); print_r($path);
将这句代码放到你的www文件夹下面,然后试图访问一下,你就知道其中道理了。
相关文章推荐
- 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组
- thinkphp的四种控制器URL访问方式
- Spring mvc系列二之 控制器多方法访问
- 让ThinkPHP支持大小写url地址访问的方法
- 关于ThinkPHP控制器的方法失效的问题
- ThinkPHP控制器里javascript代码不能执行的解决方法
- 【thinkphp3.x】thinkphp3.x中使用A方法实例化控制器对象
- 访问控制器的方法
- ThinkPHP控制器间实现相互调用的方法
- NAND Flash控制器访问NAND Flash的方法
- ThinkPHP框架下自定义控制器方法
- thinkphp A()、R()方法不能跨项目调用与当前action名称相同的控制器的原因
- thinkphp 3.2.1 控制器使用show方法不能得到输出内容
- 【thinkphp3.x】thinkphp3.x中R方法调用其它控制器中的操作方法
- ThinkPHP中URL路径访问与模块控制器之间的关系
- thinkphp的四种控制器URL访问方式
- ThinkPHP学习(二)理清ThinkPHP的目录结构及访问规则,创建第一个控制器
- ThinkPHP访问不存在的模块跳转到404页面的方法
- mvc 默认访问 Area 下控制器方法
- ThinkPHP控制器间实现相互调用的方法||ThinkPHP实现跨模块调用操作方法概述