ThinkPHP
2018-05-23 16:45:17 6 举报
AI智能生成
ThinkPHP
作者其他创作
大纲/内容
基础
环境要求
PHP5.3以上
支持windows/unix
可运行与Apache、IIS和nginx在内的多种WEB服务器和模式
Apache
Apache是世界使用排名第一的Web服务器软件
特性
支持最新的HTTP/1.1通信协议
拥有简单而强有力的基于文件的配置过程
支持通用网关接口
支持基于IP和基于域名的虚拟主机
支持多种方式的HTTP认证
集成Perl处理模块
集成代理服务器模块
支持实时监视服务器状态和定制服务器日志
支持服务器端包含指令(SSI)
支持安全Socket层(SSL)
提供用户会话过程的跟踪
支持FastCGI
通过第三方模块可以支持JavaServlets
IIS
nginx
其他Web服务器
Lighttpd
kangle
Boa
Jigsaw
支持Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase、Mongo以及PDO等多种数据库和连接
目录结构
www WEB部署目录(或者子目录)
index.php 入口文件
ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口。
入口文件主要完成
定义框架路径、项目路径(可选)
定义调试模式和应用模式(可选)
定义系统相关常量(可选)
一般不建议在入口文件中做过多的操作,但可以重新定义一些系统常量
入口文件中支持定义(建议)的一些系统常量
THINK_PATH 框架目录
APP_PATH 应用目录
RUNTIME_PATH 应用运行时目录(可写)
APP_DEBUG 应用调试模式(默认为false)
STORAGE_TYPE 存储类型(默认为File)
APP_MODE 应用模式(默认为common)
所有路径常量都必须以“/”结尾
载入框架入口文件(必须)
例子
// 定义应用目录
define('APP_PATH','./Apps/');
// 定义运行时目录
define('RUNTIME_PATH','./Runtime/');
// 开启调试模式
define('APP_DEBUG',True);
// 更名框架目录名称,并载入框架入口文件
require './Think/ThinkPHP.php';
define('APP_PATH','./Apps/');
// 定义运行时目录
define('RUNTIME_PATH','./Runtime/');
// 开启调试模式
define('APP_DEBUG',True);
// 更名框架目录名称,并载入框架入口文件
require './Think/ThinkPHP.php';
www WEB部署目录(或者子目录)
├─index.php 应用入口文件
├─Apps 应用目录
├─Public 资源文件目录
├─Runtime 运行时目录
└─Think 框架目录
├─index.php 应用入口文件
├─Apps 应用目录
├─Public 资源文件目录
├─Runtime 运行时目录
└─Think 框架目录
Application 应用目录
Common 公共模块(不能直接访问)
Home 前台模块
Admin 后台模块
Runtime 默认运行时目录(可以设置)
Public 资源文件目录
ThinkPHP 框架目录
模块化
采用多层的MVC机制,除了Conf和Common目录外,每个模块下面的目录结构可以根据需要灵活设置和添加
控制器
控制器类的命名方式是:控制器名(驼峰法,首字母大写)+Controller
控制器文件的命名方式是:类名+class.php(类文件后缀)
例子
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
echo 'hello,world!';
}
}
use Think\Controller;
class IndexController extends Controller {
public function index(){
echo 'hello,world!';
}
}
namespace Home\Controller;
系统的规范要求,表示当前类是Home模块下的控制器类,命名空间和实际的控制器文件所在的路径是一致的
Home\Controller\IndexController类 对应的控制器文件位于应用目录下面的 Home/Controller/IndexController.class.php
如果你改变了当前的模块名,那么这个控制器类的命名空间也需要随之修改
use Think\Controller;
表示引入 Think\Controller 命名空间便于直接使用。
use Think\Controller;
class IndexController extends Controller 等同于使用:
class IndexController extends \Think\Controller
class IndexController extends Controller 等同于使用:
class IndexController extends \Think\Controller
开发规范
类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如 DbMysql.class.php;
类的命名空间地址和所在的路径地址一致,例如 Home\Controller\UserController类所在的路径应该是 Application/Home/Controller/UserController.class.php;
确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写);
类名和文件名一致(包括上面说的大小写一致),例如 UserController类的文件命名是UserController.class.php, InfoModel类的文件名是InfoModel.class.php, 并且不同的类库的类命名有一定的规范;
函数、配置文件等其他类库文件之外的一般是以.php为后缀(第三方引入的不做要求);
函数的命名使用小写字母和下划线的方式,例如 get_client_ip;
方法的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如 getUserName,_parseType,通常下划线开头的方法属于私有方法;
属性的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如 tableName、_instance,通常下划线开头的属性属于私有属性;
以双下划线“__”打头的函数或方法作为魔法方法,例如 __call 和 __autoload;
常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY;
配置参数以大写字母和下划线命名,例如HTML_CACHE_ON;
语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例如 _CLASS_NOT_EXIST_;
对变量的命名没有强制的规范,可以根据团队规范来进行;
ThinkPHP的模板文件默认是以.html 为后缀(可以通过配置修改);
数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 think_user 表和 user_name字段是正确写法,类似 _username 这样的数据表字段可能会被过滤。
配置
格式
配置参数不区分大小写
ThinkPHP框架中所有配置文件的定义格式均采用返回PHP数组的方式
配置文件增加yaml/json/xml/ini以及自定义格式
加载
惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置
惯例配置
框架内置有一个惯例配置文件(位于ThinkPHP/Conf/convention.php),按照大多数的使用对常用参数进行了默认配置。
应用配置
应用配置文件也就是调用所有模块之前都会首先加载的公共配置文件(默认位于Application/Common/Conf/config.php)。
模式配置
如果使用了普通应用模式之外的应用模式的话,还可以为应用模式(后面会有描述)单独定义配置文件,文件命名规范是: Application/Common/Conf/config_应用模式名称.php(仅在运行该模式下面才会加载)。
调试配置
如果开启调试模式的话,则会自动加载框架的调试配置文件(位于ThinkPHP/Conf/debug.php)和应用调试配置文件(位于Application/Common/Conf/debug.php)
状态配置
每个应用都可以在不同的情况下设置自己的状态(或者称之为应用场景),并且加载不同的配置文件。
define('APP_STATUS','office');
那么就会自动加载该状态对应的配置文件(位于Application/Common/Conf/office.php)。
那么就会自动加载该状态对应的配置文件(位于Application/Common/Conf/office.php)。
define('APP_STATUS','home');
那么就会自动加载该状态对应的配置文件(位于Application/Common/Conf/home.php)。
那么就会自动加载该状态对应的配置文件(位于Application/Common/Conf/home.php)。
模块配置
每个模块会自动加载自己的配置文件(位于Application/当前模块名/Conf/config.php)。
如果使用了普通模式之外的其他应用模式,你还可以为应用模式单独定义配置文件,命名规范为: Application/当前模块名/Conf/config_应用模式名称.php(仅在运行该模式下面才会加载)。
模块还可以支持独立的状态配置文件(该功能为3.2.2版本新增),命名规范为: Application/当前模块名/Conf/应用状态.php。
读取
定义了配置文件之后,都统一使用系统提供的C方法来读取已有的配置。
获取已经设置的参数值:C('参数名称')
配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,即使某个设置参数已经生效过期了。
动态
在具体的操作方法里面,我们仍然可以对某些参数进行动态配置(或者增加新的配置)
设置新的值:
C('参数名称','新的参数值');
C('参数名称','新的参数值');
扩展
支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样。
加载扩展配置文件
'LOAD_EXT_CONFIG' => 'user,db',
假设扩展配置文件user.php 和db.php分别用于用户配置和数据库配置,这样做的好处是哪怕以后关闭调试模式,你修改db配置文件后依然会自动生效。
'LOAD_EXT_CONFIG' => 'user,db',
假设扩展配置文件user.php 和db.php分别用于用户配置和数据库配置,这样做的好处是哪怕以后关闭调试模式,你修改db配置文件后依然会自动生效。
批量
$config = array('WEB_SITE_TITLE'=>'ThinkPHP','WEB_SITE_DESCRIPTION'=>'开源PHP框架');
C($config);
$config数组中的配置参数会合并到现有的全局配置中。
C($config);
$config数组中的配置参数会合并到现有的全局配置中。
架构
一个完整的ThinkPHP应用基于模块/控制器/操作设计,并且,如果有需要的话,可以支持多入口文件和多级控制器。
应用
基于同一个入口文件访问的项目我们称之为一个应用。
模块
一个应用下面可以包含多个模块,每个模块在应用目录下面都是一个独立的子目录。
公共模块
Common模块是一个特殊的模块,是应用的公共模块,访问所有的模块之前都会首先加载公共模块下面的配置文件(Conf/config.php)和公共函数文件(Common/function.php)。但Common模块本身不能通过URL直接访问,公共模块的其他文件则可以被其他模块继承或者调用。
自动生成模块
禁止访问模块
默认配置中是禁止访问Common模块和Runtime模块(Runtime目录是默认的运行时目录)
增加其他的禁止访问模块列表
// 设置禁止访问的模块列表
'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
设置后,Api模块不能通过URL直接访问
设置访问列表
'MODULE_ALLOW_LIST' => array('Home','Admin','User'),
'DEFAULT_MODULE' => 'Home',
'DEFAULT_MODULE' => 'Home',
设置之后,除了Home、Admin和User模块之外的模块都不能被直接访问,并且Home模块是默认访问模块(可以不出现在URL地址)。
单模块设计
// 关闭多模块访问
'MULTI_MODULE' => false,
'DEFAULT_MODULE' => 'Home',
'MULTI_MODULE' => false,
'DEFAULT_MODULE' => 'Home',
一旦关闭多模块访问后,就只能访问默认模块(这里设置的是Home)。
多入口设计
可以给相同的应用及模块设置多个入口,不同的入口文件可以设置不同的应用模式或者绑定模块。
// 绑定Home模块到当前入口文件
define('BIND_MODULE','Home');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
define('BIND_MODULE','Home');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
绑定模块后,原来的访问地址
http://serverName/index.php/Home/Index/index
就变成
http://serverName/home.php/Index/index
http://serverName/index.php/Home/Index/index
就变成
http://serverName/home.php/Index/index
控制器
每个模块可以包含多个控制器,一个控制器通常体现为一个控制器类。
操作
每个控制器类可以包含多个操作方法,也可能是绑定的某个操作类,每个操作是URL访问的最小单元。
前置后置操作
前置和后置操作指的是在执行某个操作方法之前和之后会自动调用的方法,不过仅对访问控制器有效。
其他的分层控制器层和内部调用控制器的情况下前置和后置操作是无效的。
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller{
//前置操作方法
public function _before_index(){
echo 'before
';
}
public function index(){
echo 'index
';
}
//后置操作方法
public function _after_index(){
echo 'after
';
}
}
use Think\Controller;
class IndexController extends Controller{
//前置操作方法
public function _before_index(){
echo 'before
';
}
public function index(){
echo 'index
';
}
//后置操作方法
public function _after_index(){
echo 'after
';
}
}
URL模式
一个典型的URL访问规则是(以默认的PATHINFO模式为例说明,当然也可以支持普通的URL模式):
http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]
http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]
入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块、控制器和操作:
http://serverName/index.php/模块/控制器/操作
http://serverName/index.php/模块/控制器/操作
URL是区分大小写(主要是针对模块、控制器和操作名,不包括应用参数)的
框架内置了一个配置参数用于解决URL大小写的问题,
'URL_CASE_INSENSITIVE' => true,
URL地址不区分大小写,是框架在部署模式下的默认设置。
'URL_CASE_INSENSITIVE' => true,
URL地址不区分大小写,是框架在部署模式下的默认设置。
开启调试模式时,URL_CASE_INSENSITIVE是false,调试模式下面URL区分大小写
普通模式
URL_MODEL设置0
传统的GET传参方式来指定当前访问的模块和操作
http://localhost/?m=home&c=user&a=login&var=value
m参数表示模块,c参数表示控制器,a参数表示操作(当然这些参数都是可以配置的),后面的表示其他GET参数。
默认的变量设置和你的应用变量有冲突的话,你需要重新设置系统配置
'VAR_MODULE' => 'module', // 默认模块获取变量
'VAR_CONTROLLER' => 'controller', // 默认控制器获取变量
'VAR_ACTION' => 'action', // 默认操作获取变量
'VAR_CONTROLLER' => 'controller', // 默认控制器获取变量
'VAR_ACTION' => 'action', // 默认操作获取变量
http://localhost/?module=home&controller=user&action=login&var=value
PATHINFO模式
URL_MODEL设置1
系统的默认URL模式,提供了最好的SEO支持,系统内部已经做了环境的兼容处理,所以能够支持大多数的主机环境。对应上面的URL模式
PATHINFO模式下面的URL访问地址是: http://localhost/index.php/home/user/login/var/value/
PATHINFO地址的前三个参数分别表示模块/控制器/操作。
URL是可定制的
// 更改PATHINFO参数分隔符
'URL_PATHINFO_DEPR'=>'-',
'URL_PATHINFO_DEPR'=>'-',
REWRITE模式
URL_MODEL设置2
在PATHINFO模式的基础上添加了重写规则的支持,可以去掉URL地址里面的入口文件index.php,但是需要额外配置WEB服务器的重写规则。
兼容模式
URL_MODEL设置3
用于不支持PATHINFO的特殊环境
多层MVC
模型层
数据层
Model/UserModel
逻辑层
Logic/UserLogic
服务层
Service/UserService
D('User') //实例化UserModel
D('User','Logic') //实例化UserLogic
D('User','Service') //实例化UserService
D('User','Logic') //实例化UserLogic
D('User','Service') //实例化UserService
子主题
子主题
子主题
视图层
模板
模板引擎
视图的多层
通过目录区分
View/default/User/add.html
View/blue/User/add.html
View/blue/User/add.html
采用不同的视图目录
view 普通视图层目录
mobile 手机端访问视图层目录
mobile 手机端访问视图层目录
控制层
控制器层由核心控制器和业务控制器组成,核心控制器由系统内部的App类完成,负责应用(包括模块、控制器和操作)的调度控制,包括HTTP请求拦截和转发、加载配置等。业务控制器则由用户定义的控制器类完成
多层控制器的划分也不是强制的,可以根据应用的需要自由分层。控制器分层里面可以根据需要调用分层模型,也可以调用不同的分层视图
CBD模式
核心Core
核心函数库
ThinkPHP/Common/functions.php // 核心函数库
惯例配置
ThinkPHP/Conf/convention.php // 惯例配置文件
ThinkPHP/Conf/debug.php // 惯例调试配置文件
ThinkPHP/Mode/common.php // 普通模式定义文件
核心类库(包括基础类和内置驱动及核心行为)
ThinkPHP/Library/Think // 核心类库包
ThinkPHP/Library/Behavior // 系统行为类库
ThinkPHP/Library/Think/App.class.php // 核心应用类
ThinkPHP/Library/Think/Cache.class.php // 核心缓存类
ThinkPHP/Library/Think/Controller.class.php // 基础控制器类
ThinkPHP/Library/Think/Db.class.php // 数据库操作类
ThinkPHP/Library/Think/Dispatcher.class.php // URL解析调度类
ThinkPHP/Library/Think/Exception.class.php // 系统基础异常类
ThinkPHP/Library/Think/Hook.class.php // 系统钩子类
ThinkPHP/Library/Think/Log.class.php // 系统日志记录类
ThinkPHP/Library/Think/Model.class.php // 系统基础模型类
ThinkPHP/Library/Think/Route.class.php // 系统路由类
ThinkPHP/Library/Think/Storage.class.php // 系统存储类
ThinkPHP/Library/Think/Template.class.php // 内置模板引擎类
ThinkPHP/Library/Think/Think.class.php // 系统引导类
ThinkPHP/Library/Think/View.class.php // 系统视图类
ThinkPHP/Library/Behavior // 系统行为类库
ThinkPHP/Library/Think/App.class.php // 核心应用类
ThinkPHP/Library/Think/Cache.class.php // 核心缓存类
ThinkPHP/Library/Think/Controller.class.php // 基础控制器类
ThinkPHP/Library/Think/Db.class.php // 数据库操作类
ThinkPHP/Library/Think/Dispatcher.class.php // URL解析调度类
ThinkPHP/Library/Think/Exception.class.php // 系统基础异常类
ThinkPHP/Library/Think/Hook.class.php // 系统钩子类
ThinkPHP/Library/Think/Log.class.php // 系统日志记录类
ThinkPHP/Library/Think/Model.class.php // 系统基础模型类
ThinkPHP/Library/Think/Route.class.php // 系统路由类
ThinkPHP/Library/Think/Storage.class.php // 系统存储类
ThinkPHP/Library/Think/Template.class.php // 内置模板引擎类
ThinkPHP/Library/Think/Think.class.php // 系统引导类
ThinkPHP/Library/Think/View.class.php // 系统视图类
行为Behavior
行为(Behavior)是ThinkPHP扩展机制中比较关键的一项扩展,行为既可以独立调用,也可以绑定到某个标签(位)中进行侦听
标签(位)
有些行为的作用位置都是在应用执行前,有些行为都是在模板输出之后,我们把这些行为发生作用的位置称之为标签(位),也可以称之为钩子,当应用程序运行到这个标签的时候,就会被拦截下来,统一执行相关的行为
系统标签位
app_init 应用初始化标签位
module_check 模块检测标签位(3.2.1版本新增)
path_info PATH_INFO检测标签位
app_begin 应用开始标签位
action_name 操作方法名标签位
action_begin 控制器开始标签位
view_begin 视图输出开始标签位
view_template 视图模板解析标签位
view_parse 视图解析标签位
template_filter 模板解析过滤标签位
view_filter 视图输出过滤标签位
view_end 视图输出结束标签位
action_end 控制器结束标签位
app_end 应用结束标签位
module_check 模块检测标签位(3.2.1版本新增)
path_info PATH_INFO检测标签位
app_begin 应用开始标签位
action_name 操作方法名标签位
action_begin 控制器开始标签位
view_begin 视图输出开始标签位
view_template 视图模板解析标签位
view_parse 视图解析标签位
template_filter 模板解析过滤标签位
view_filter 视图输出过滤标签位
view_end 视图输出结束标签位
action_end 控制器结束标签位
app_end 应用结束标签位
自定义标签
开发人员还可以在应用中添加自己的应用标签,在任何需要拦截的位置添加如下代码即可:
// 添加my_tag 标签侦听
\Think\Hook::listen('my_tag');
// 添加my_tag 标签侦听
\Think\Hook::listen('my_tag');
方法第一个参数是要侦听的标签位,除此之外还可以传入并且只接受一个参数,如果需要传入多个参数,请使用数组。
// 添加my_tag 标签侦听
\Think\Hook::listen('my_tag',$params);
该参数为引用传值,所以只能传入变量
// 添加my_tag 标签侦听
\Think\Hook::listen('my_tag',$params);
该参数为引用传值,所以只能传入变量
核心行为
系统的很多核心功能也是采用行为扩展组装的,对于满足项目日益纷繁复杂的需求和定制底层框架提供了更多的方便和可能性。
核心行为位于 ThinkPHP/Behavior/ 目录下面
BuildLite 生成Lite文件(3.2.1版本新增)
ParseTemplate 模板文件解析,并支持第三方模板引擎驱动
ShowPageTrace 页面Trace功能行为,完成页面Trace功能
ShowRuntime 运行时间显示行为,完成运行时间显示
TokenBuild 令牌生成行为,完成表单令牌的自动生成
ReadHtmlCache 读取静态缓存行为
WriteHtmlCache 生成静态缓存行为
行为定义
自定义的扩展行为可以放在核心或者应用目录,只要遵循命名空间的定义规则即可。
行为类的命名采用:
> 行为名称(驼峰法,首字母大写)+Behavior
> 行为名称(驼峰法,首字母大写)+Behavior
行为类的定义方式如下:
namespace Home\Behavior;
class TestBehavior {
// 行为扩展的执行入口必须是run
public function run(&$params){
if(C('TEST_PARAM')) {
echo 'RUNTEST BEHAVIOR '.$params;
}
}
}
namespace Home\Behavior;
class TestBehavior {
// 行为扩展的执行入口必须是run
public function run(&$params){
if(C('TEST_PARAM')) {
echo 'RUNTEST BEHAVIOR '.$params;
}
}
}
行为绑定
驱动Driver
ThinkPHP/Library/Think/Cache/Driver // 缓存驱动类库
ThinkPHP/Library/Think/Db/Driver // 数据库驱动类库
ThinkPHP/Library/Think/Log/Driver // 日志记录驱动类库
ThinkPHP/Library/Think/Session/Driver // Session驱动类库
ThinkPHP/Library/Think/Storage/Driver // 存储驱动类库
ThinkPHP/Library/Think/Template/Driver // 第三方模板引擎驱动类库
ThinkPHP/Library/Think/Template/TagLib // 内置模板引擎标签库扩展类库
ThinkPHP/Library/Think/Db/Driver // 数据库驱动类库
ThinkPHP/Library/Think/Log/Driver // 日志记录驱动类库
ThinkPHP/Library/Think/Session/Driver // Session驱动类库
ThinkPHP/Library/Think/Storage/Driver // 存储驱动类库
ThinkPHP/Library/Think/Template/Driver // 第三方模板引擎驱动类库
ThinkPHP/Library/Think/Template/TagLib // 内置模板引擎标签库扩展类库
系统流程
伪静态
'URL_HTML_SUFFIX'=>'****'
支持指定静态后缀
'URL_HTML_SUFFIX'=>''
支持所有的静态后缀
默认为html
AJAX返回
系统的\Think\Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、JSONP、XML和EVAL四种方式给客户端接受数据,并且支持配置其他方式的数据格式返回。
跳转和重定向
系统的\Think\Controller类内置了两个跳转方法success和error,用于页面跳转提示,而且可以支持ajax提交。
变量
传统方式获取
$id = $_GET['id']; // 获取get变量
$name = $_POST['name']; // 获取post变量
$value = $_SESSION['var']; // 获取session变量
$name = $_COOKIE['name']; // 获取cookie变量
$file = $_SERVER['PHP_SELF']; // 获取server变量
$name = $_POST['name']; // 获取post变量
$value = $_SESSION['var']; // 获取session变量
$name = $_COOKIE['name']; // 获取cookie变量
$file = $_SERVER['PHP_SELF']; // 获取server变量
在框架中统一使用I函数进行变量获取和过滤
I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源'])
变量类型
get 获取GET参数
post 获取POST参数
param 自动判断请求类型获取GET、POST或者PUT参数
request 获取REQUEST 参数
put 获取PUT 参数
session 获取 $_SESSION 参数
cookie 获取 $_COOKIE 参数
server 获取 $_SERVER 参数
globals 获取 $GLOBALS参数
path 获取 PATHINFO模式的URL参数
data 获取 其他类型的参数,需要配合额外数据源参数
post 获取POST参数
param 自动判断请求类型获取GET、POST或者PUT参数
request 获取REQUEST 参数
put 获取PUT 参数
session 获取 $_SESSION 参数
cookie 获取 $_COOKIE 参数
server 获取 $_SERVER 参数
globals 获取 $GLOBALS参数
path 获取 PATHINFO模式的URL参数
data 获取 其他类型的参数,需要配合额外数据源参数
直接获取整个变量类型
// 获取整个$_GET 数组
I('get.');
I('get.');
0 条评论
下一页