thinkphp5

thinkphp

thinkphp目录结构

project  应用部署目录
├─application           应用目录(可设置)
│  ├─common             公共模块目录(可更改)
│  ├─index              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录
│  ├─command.php        命令行工具配置文件
│  ├─common.php         应用公共(函数)文件
│  ├─config.php         应用(公共)配置文件
│  ├─database.php       数据库配置文件
│  ├─tags.php           应用行为扩展定义文件
│  └─route.php          路由配置文件
├─extend                扩展类库目录(可定义)
├─public                WEB 部署目录(对外访问目录)
│  ├─static             静态资源存放目录(css,js,image)
│  ├─index.php          应用入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于 apache 的重写
├─runtime               应用的运行时目录(可写,可设置)
├─vendor                第三方类库目录(Composer)
├─thinkphp              框架系统目录
│  ├─lang               语言包目录
│  ├─library            框架核心类库目录
│  │  ├─think           Think 类库包目录
│  │  └─traits          系统 Traits 目录
│  ├─tpl                系统模板目录
│  ├─.htaccess          用于 apache 的重写
│  ├─.travis.yml        CI 定义文件
│  ├─base.php           基础定义文件
│  ├─composer.json      composer 定义文件
│  ├─console.php        控制台入口文件
│  ├─convention.php     惯例配置文件
│  ├─helper.php         助手函数文件(可选)
│  ├─LICENSE.txt        授权说明文件
│  ├─phpunit.xml        单元测试配置文件
│  ├─README.md          README 文件
│  └─start.php          框架引导文件
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件

URL访问

       ThinkPHP5.O的URL访问受路由决定,如果关闭路由或者没有匹配路由的情况下,则是基于:
       http://serverName/index.php(或者其他应用入口文件,可省略)/模块/控制器/操作/参数/值
 在Thinkphp5.0框架中,在url地址栏里面如果不写模块、控制器和操作名,
 默认访问的就是index模块下面的index控制器下面的index操作,可以在config.php文件中进行修改。

入口文件

用户请求的PHP文件,负责处理一个请求(注意,不一定是URL请求)的生命周期,最常见的入口文件就是index.php,有时候也会为了某些特殊的需求而增加新的入口文件,例如给后台模块单独设置的一个入口文件admin.php或者一个控制器程序入口think都属于入口文件。

请求信息

如果要获取当前的请求信息,可以使用\think\Request类,除了下文中的

$request = Request::instance( );

也可以使用助手函数

$request = request( );

当然,最方便的还是使用注入请求对象的方式来获取变量。

获取URL信息

$request = Request: :instance();
//获取当前域名
echo "domain: ' . $request->domain() . '<br/ > ';
//获取当前入口文件
echo 'file: ' . $request->baseFile() . '<br/ > ' ;
//获取当前URL地址不含域名
echo 'url: ' . $request->url() . '<br/ > ' ;
//获取包含域名的完整URL地址
echo 'url with domain: ' . $request->url(true) . '<br/> ';
//获取当前URL地址不含QUERY_STRING
echo 'url without query: ' . $request->baseUrl() . '<br/> ';
//获取URL访问的ROOT地址
echo 'root: ' . $request->root() . '<br/> ';
//获取URL访问的ROOT地址
echo 'root with domain: ' . $request->root(true) . '<br/> ' ;
//获取URL地址中的PATH_INFO信息
echo 'pathinfo: ' . $request->pathinfo() . '<br/> ';
//获取URL地址中的PATH_INFO信息不含后缀
echo 'pathinfo: ' . $request->path() . '<br/> ';
//获取URL地址中的后缀信息
echo 'ext: ' . $request->ext() . '<br/> ';

输出结果为:

domain: https://www.codelovers.cnfile:/index.php
url:/index /index/hello.html?name=thinkphp
url with domain: https:// www.codelovers.cn/index/index/hello.html?name=thinkphpurl without query :/index / index /hello.html
root:root with domain : https: // www . codelovers.cnpathinfo: index/index/hello.html
pathinfo: index /index/hello
ext: html

练习

在这里插入图片描述

设置/获取模块/控制器/操作名称

$request= Request::instance();
echo"当前模块名称是".$request->module();
echo "当前控制器名称是". $request->controiler();
echo ""当前操作名称是”. srequest->action() ;

如果当前访问的地址是http://serveriName/index.php/index/hello_world/index
输出结果为:

当前模块名称是index
当前控制器名称是Helloworld
当前操作名称是index

设置模块名称值需要像module方法中传入名称即可,同样使用于设置控制器名称和操作名称

Request::instance()->module( " module_name " );

获取请求参数

Srequest = Request::instance();
echo '请求方法:'.$request->method()."<br/>';
echo '资源类型:'.$request->type().'<br/>' ;
echo '访问地址:'. $request->ip() . '<br/>';
echo '是否AJax请求:'.var_export($request->isAjax(),true).'<br/>' ;
echo '请求参数:';
dump( $request->param( ));
echo '请求参数:仅包含name';
dump($request->only(["name"]));
echo "请求参数:排除name" ;
dump($request->except(['name"]));

输出结果为:

请求方法:GET
资源类型: html
访向地址:127.0.0.1
是否AJax请求:false
请求参数∶
array (size=2)
"test"=> string  'ddd'(length=3)
"name"=>string 'thinkphp'(length=8)
请求参数:仅包含name
array (size=1)
'name'=>string 'thinkphp'(length=8)
请求参数︰排除name
array (size=1)

变量

输入变量

概述

可以通过Request对象完成全局输入变量的检测、获取和安全过滤,支持包括 $ _GET 、$ _POST 、$_REQUEST 、 $_SERVER 、 $_SESSION . $_CO0KIE . $_ENV等系统变量,以及文件上传信息。

检测变量是否设置

可以使用has方法来检测一个变量参数是否设置,如下:

Request::instance()->has( 'id', 'get');
Request::instance()->has('name','post');

或者使用助手函数

input( '?get.id');
input( '?post.name');

变量检测可以支持所有支持的系统变量。

变量获取

变量获取使用\think\Request类的如下方法及参数︰

变量类型方法('变量名/变量修饰符','默认值','过滤方法')

变量类型方法包括:

方法 描述
param 获取当前请求的变量
get 获取 $_GET 变量
post 获取 $_POST 变量
put 获取 PUT 变量
delete 获取 DELETE 变量
session 获取 $_SESSION 变量
cookie 获取 $_COOKIE 变量
request 获取 $_REQUEST 变量
server 获取 $_SERVER 变量
env 获取 $_ENV 变量
route 获取 路由(包括PATHINFO) 变量
file 获取 $_FILES 变量

练习

在这里插入图片描述
在这里插入图片描述

获取PARAM变量

PARAM变量是框架提供的用于自动识别GET、POST或者PUT请求的一种变量获取方式,是系统推荐的获取请求参数的方法,用法如下:

// 获取当前请求的name变量
Request::instance()->param('name');
// 获取当前请求的所有变量(经过过滤)
Request::instance()->param();
// 获取当前请求的所有变量(原始数据)
Request::instance()->param(false);
// 获取当前请求的所有变量(包含上传文件)
Request::instance()->param(true);

param方法会把当前请求类型的参数和PATH_INFO变量以及GET请求合并。

使用助手函数实现:

input('param.name');
input('param.');
或者
input('name');
input('');

因为input函数默认就采用PARAM变量读取方式。

练习

在这里插入图片描述

获取GET变量

Request::instance()->get('id'); // 获取某个get变量
Request::instance()->get('name'); // 获取get变量
Request::instance()->get(); // 获取所有的get变量(经过过滤的数组)
Request::instance()->get(false); // 获取所有的get变量(原始数组)

或者使用内置的助手函数input方法实现相同的功能:

input('get.id');
input('get.name');
input('get.');

注:pathinfo地址参数不能通过get方法获取,查看“获取PARAM变量”

获取POST变量

Request::instance()->
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值