欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程语言 > php >内容正文

php

thinkphp5基本的一些操作/api友好/获取请求信息(request)/判断请求类型(get...)/验证参数数据(validate)/连接数据库/原生sql语句查询 -ag凯发k8国际

发布时间:2024/10/14 php 26 豆豆

文章目录

      • 一、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);} }

总结

以上是ag凯发k8国际为你收集整理的thinkphp5基本的一些操作/api友好/获取请求信息(request)/判断请求类型(get...)/验证参数数据(validate)/连接数据库/原生sql语句查询的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图