thinkphp5基本的一些操作/api友好/获取请求信息(request)/判断请求类型(get...)/验证参数数据(validate)/连接数据库/原生sql语句查询 -凯发k8官方网
文章目录
- 一、api友好
- 1.举两个thinkphp5关于api友好的例子
- (1)数据输出
- (2)错误调试trace
- 二、获取请求信息(request)
- 1.获取url信息
- 2.获取 模块/控制器/操作名称
- 3.获取请求参数(params)
- 4.获取路由和调度信息
- 三、判断请求类型(get/post/put......)
- 四、验证参数数据
- 五、连接数据库
- 六、原生sql语句查询
一、api友好
官方文档:https://www.kancloud.cn/manual/thinkphp5/118017
api (application programming interface):简单来说就是应用程序编程接口。
我对api友好的理解:指原本一些复杂的操作方法函数,在thinkphp5里面被包装成类库,咱们可以更加方便的使用类库去实现我们想要实现的操作效果。
下面引入一位大神对于api的理解 ,我感觉他讲解的挺好的。
作为一个编程初学者来说,api函数也许是一个时常耳闻却感觉有些神秘的东西。单看它的复杂语法,就足令人望而生畏,但是任何事物在我们深入了解它之前,总是会有这种感觉的。我们这篇api入门教程的目的,就是要把api函数的来龙去脉告诉大家,破除对api函数的畏惧,使它成为我们编程的好助手。
大家可能在许多书上看到过api的英文全称(application programming interface),win32 api也就是microsoftwindows 32位平台的应用程序编程接口。对这个定义的理解,需要追溯到操作系统的发展历史上,当windows操作系统开始占据主导地位的时候,开发windows平台下的应用程序成为人们的需要。而在windows程序设计领域处于发展的初期,windows程序员所能使用的编程工具唯有api函数,这些函数是windows提供给应用程序与操作系统的接口,他们犹如“积木块”一样,可以搭建出各种界面丰富,功能灵活的应用程序。所以可以认为api函数是构筑整个windows框架的基石,在它的下面是windows的操作系统核心,而它的上面则是所有的华丽的windows应用程序。
但是,那时的windows程序开发还是比较复杂的工作,程序员必须熟记一大堆常用的api函数,而且还得对windows操作系统有深入的了解。然而随着软件技术的不断发展,在windows平台上出现了很多优秀的可视化编程环境,程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。
这些优秀可视化编程环境操作简单、界面友好(诸如vb、vc 、delphi等),在这些工具中提供了大量的类库和各种控件,它们替代了api的神秘功能,事实上这些类库和控件都是构架在win32 api函数基础之上的,是封装了的api函数的集合。它们把常用的api函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了windows应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。
实际上如果我们要开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用api函数,虽然类库和控件使应用程序的开发简单的多,但它们只提供windows的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用api函数来实现。
这也是api函数使用的场合,所以我们对待api函数不必刻意来研究每一个函数的用法,那也是不现实的(能用的到的api函数有几千个呢)。正如某位大虾所说:api不要去学,在需要的时候去查api帮助就足够了。
1.举两个thinkphp5关于api友好的例子
(1)数据输出
namespace app\index\controller; class index {public function index() {echo "十年磨一剑";echo "";echo "where: app/index/controller/index.php/index->index()";echo "
";$data = ['name'=>'thinkphp','url'=>'thinkphp.cn'];//config.php中设置--->'default_return_type'=>'json'//即可返回json类型的数据return ['data'=>$data,'code'=>1,'message'=>'操作完成1']; // 支持指定json数据输出return json(['data'=>$data,'code'=>1,'message'=>'操作完成2']);// 支持指定xml数据输出return xml(['data'=>$data,'code'=>1,'message'=>'操作完成3']);//核心支持的数据类型包括view、xml、json和jsonp,其他类型的需要自己扩展。} }
- 运行结果:
(2)错误调试trace
由于api开发不方便在客户端进行开发调试,但thinkphp5的trace调试功能支持socket在内的方式,可以实现远程的开发调试。
设置方式:
//config.php'app_trace' => true, 'trace' => ['type' => 'socket', // socket服务器'host' => 'slog.thinkphp.cn', ], 然后安装chrome浏览器插件后即可进行远程调试,详细参考调试部分。
二、获取请求信息(request)
如果要获取当前的请求信息,可以使用\think\request类
- $request = request::instance();//创建一个请求对象调用request类库方法来实现相关功能
- $request = request();//还可以使用助手函数
- 官方文档:https://www.kancloud.cn/manual/thinkphp5/158834
1.获取url信息
namespace app\index\controller; use think\request; class index {public function index() {$request = request::instance();// 获取当前域名echo '当前域名: ' . $request->domain() . '';// 获取当前入口文件echo '当前入口文件: ' . $request->basefile() . '
';// 获取当前url地址 不含域名echo '当前url地址 不含域名: ' . $request->url() . '
';// 获取包含域名的完整url地址echo '获取包含域名的完整url地址: ' . $request->url(true) . '
';// 获取当前url地址 不含query_stringecho '获取当前url地址 不含query_string: ' . $request->baseurl() . '
';// 获取url访问的root地址echo '获取url访问的root地址:' . $request->root() . '
';// 获取url访问的root地址echo '获取url访问的root地址: ' . $request->root(true) . '
';// 获取url地址中的path_info信息echo '获取url地址中的path_info信息: ' . $request->pathinfo() . '
';// 获取url地址中的path_info信息 不含后缀echo '获取url地址中的path_info信息 不含后缀: ' . $request->path() . '
';// 获取url地址中的后缀信息echo '获取url地址中的后缀信息: ' . $request->ext() . '
';}}
2.获取 模块/控制器/操作名称
namespace app\index\controller; use think\request; class index {public function index() {$request = request::instance();echo "当前模块名称是 ". $request->module();echo "当前控制器名称是 " . $request->controller();echo "
当前操作名称是" . $request->action();"
";} }
3.获取请求参数(params)
namespace app\index\controller; use think\request;class index {public function index() {$request = request::instance();echo '请求方法:' . $request->method() . '';echo '资源类型:' . $request->type() . '
';echo '访问ip地址:' . $request->ip() . '
';echo '是否ajax请求:' . var_export($request->isajax(), true) . '
';echo '请求参数:';dump($request->param());echo '请求参数:仅包含name';dump($request->only(['name']));echo '请求参数:排除name';dump($request->except(['name']));}}
4.获取路由和调度信息
namespace app\index\controller; use think\request;class index {public function index() {$request = request::instance();echo '路由信息:';dump($request->route());echo '调度信息:';dump($request->dispatch());}}三、判断请求类型(get/post/put…)
在很多情况下面,我们需要判断当前操作的请求类型是get、post、put、delete或者head,一方面可以针对请求类型作出不同的逻辑处理,另外一方面有些情况下面需要验证安全性,过滤不安全的请求。
thinkphp5.0 取消了用于判断请求类型的系统常量(如is_get,is_post等),统一采用 think\request类 处理请求类型。
用法如下:
namespace app\index\controller; use think\request;class index {public function index() {$request = request::instance();// 是否为 get 请求if ($request->isget()) echo "当前为 get 请求";// 是否为 post 请求if ($request->ispost()) echo "当前为 post 请求";// 是否为 put 请求if ($request->isput()) echo "当前为 put 请求";// 是否为 delete 请求if ($request->isdelete()) echo "当前为 delete 请求";// 是否为 ajax 请求if ($request->isajax()) echo "当前为 ajax 请求";// 是否为 pjax 请求if ($request->ispjax()) echo "当前为 pjax 请求";// 是否为手机访问if ($request->ismobile()) echo "当前为手机访问";// 是否为 head 请求if ($request->ishead()) echo "当前为 head 请求";// 是否为 patch 请求if ($request->ispatch()) echo "当前为 patch 请求";// 是否为 options 请求if ($request->isoptions()) echo "当前为 options 请求";// 是否为 cliif ($request->iscli()) echo "当前为 cli";// 是否为 cgiif ($request->iscgi()) echo "当前为 cgi";}}四、验证参数数据
namespace app\index\controller; use \think\validate; class index {public function index() {$rule = [//验证规则'name' => 'require|max:25','age' => 'number|between:1,120','email' => 'email',];$msg = [//返回的错误信息'name.require' => '名称必须','name.max' => '名称最多不能超过25个字符','age.number' => '年龄必须是数字','age.between' => '年龄只能在1-120之间','email' => '邮箱格式错误',];$data = input('post.');//http请求方式post$validate = new validate($rule,$msg);//实例化一个验证类对象$result = $validate->batch()->check($data);//batch()批量验证if (!$validate->check($data)) {//检查post方式传进的数据是否符合规则dump($validate->geterror());//返回错误信息$msg}} }五、连接数据库
database.php/* 数据库设置 */ 'database' => [// 数据库类型'type' => 'mysql',// 服务器地址'hostname' => '127.0.0.1',// 数据库名'database' => 'thinkphp',// 数据库用户名'username' => 'root',// 数据库密码'password' => '',//自己设置的密码// 数据库连接端口'hostport' => '',// 数据库连接参数'params' => [],// 数据库编码默认采用utf8'charset' => 'utf8',// 数据库表前缀'prefix' => '',// 数据库调试模式'debug' => false, ],六、原生sql语句查询
namespace app\index\controller; use think\db;//引用db类库 class index {public function index(){$res = db::query('select version()');dump($res);} }总结
以上是凯发k8官方网为你收集整理的thinkphp5基本的一些操作/api友好/获取请求信息(request)/判断请求类型(get...)/验证参数数据(validate)/连接数据库/原生sql语句查询的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: thinkphp5/phpstudy分析
- 下一篇: