Thinkphp5.0极速搭建restful风格接口层
下面是基于ThinkPHP V5.0 RC4框架,以restful风格完成的新闻查询(get)、新闻增加(post)、新闻修改(put)、新闻删除(delete)等server接口层。
1、下载ThinkPHP V5.0 RC4版本;
2、配置虚拟域名(非必须,只是为了方便);
Apache\\conf\\extra\\httpd-vhosts.conf
3、开启伪静态支持.htaccess文件
apache方法:
a)在conf目录下httpd.conf中找到下面这行并去掉#
LoadModule rewrite_module modules/mod_rewrite.so
b)将所有AllowOverride None改成AllowOverride All
public\\.htaccess文件内容:
4、创建测试数据
tprestful.sql
5、修改数据库配置文件
application\\database.php
6、定义restful风格的路由规则,
application\\route.php
7、新建模型
application\\index\\model\\News.php
8、新建控制器
application\\index\\controller\\News.php
9、测试
a)、访问入口文件,默认在public\\index.php
b)、客户端测试restful的get、post、put、delete方法
client\\client.php
请求工具类
client\\ApiClient.php
完整代码从我github下载:
https://github.com/phper-hard/tp5-restful
TP6多应用模式下获取不到当前控制器和方法名
前言:最近使用TP6做了一套项目,发现多应用模式下使用 $this->request->controller() 和 $this->request->action() 无法获取到当前的控制器和方法名,自己研究了一下,找了个笨办法,记录一下,如果大家有更好的办法,欢迎留言。
开发环境
问题重现
1、先创建一个新项目
2、修改 /config/app.php 加入下面两行
3、修改 /config/route.php
4、删除 /app 下面的 controller 目录,创建 index 文件夹,目录结构如下:
5、上代码,IndexController.php 的内容:
/app/index/route/app.php 的内容
6、启动然后访问该应用,控制器与方法输出都是空。
解决方案
调试发现 $this->request 对象的 rule 里面有当前控制器和方法名
可使用 $this->request->rule()->getName()或$this->request->rule()->getRoute() 获取,
谜之操作
另外调试发现,Controller 的 init 方法好像没执行,在 Request 里面打两个断点,一样可以访问,可以用上面的方法获取到控制器和方法名。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。