ThinkPHP 3.2 常用内置函数

ThinkPHP 3.2

  • 内置函数
    • C
    • D
    • M
    • [疑问: D与M方法的相同点与不同点](#疑问: D与M方法的相同点与不同点)
    • I
    • A
    • R

内置函数

C

C方法是用于获取或修改,系统配置参数
语法:

  1. 获取:C(需要获得的配置参数Name)

    $value = C('config_name');

  • 设置:C(参数名称,参数value)

    C('config_name', 'new_value');

C方法可以获取index.php,与Common\Conf\config.php等,系统核心配置文件中配置,如,数据库相关配置:

复制代码
DB_TYPE:数据库类型。
DB_HOST:数据库主机。
DB_NAME:数据库名称。
DB_USER:数据库用户名。
DB_PWD:数据库密码。
DB_PORT:数据库端口。
DB_PREFIX:数据库表前缀。

系统公共设置:

复制代码
APP_DEBUG:是否开启调试模式。
APP_GROUP_MODE:分组模式,默认为0,即目录分组模式。
APP_GROUP_LIST:定义分组列表。
DEFAULT_TIMEZONE:默认时区。

总结:这是一个提供给开发人员灵活更改配置文件配置的函数,但是需要非常注意使用,一旦多处混乱使用将导致全局配置发生错误

D

D方法用于实例化指定数据库表模型,属于实例化数据访问层模型,D方法真正含义表示,实例化与数据表相对应的Model类

复制代码
//实例化模型
$User = D('User');
// 相当于 $User = new \Home\Model\UserModel();

语法:

复制代码
D('表名称')

M

M方法用于实例化指定数据库表模型,属于实例化业务层模型

复制代码
M('表名称')

疑问: D与M方法的相同点与不同点

相同点:

  • D与M方法语法都相同,都可以直接使用数据表名称,来访问数据表
  • 都支持链式调用

不同点:

  • D方法需要实例化模型类(Model类),而M方法则不需要,所以仅使用CRUD时,使用M方法效率更高
  • D方法表示自定义到模型类,所以它不仅支持简单到CRUD操作,还支持封装自定义操作数据表函数,便于外部调用

I

I方法命名来自于英文Input(输入),主要用于更加方便和安全的获取请求输入变量
语法

复制代码
I('[变量来源类型.]变量名[/变量类型]',['默认值'],['过滤方法'])

变量来源类型参数有:

复制代码
get		获取GET参数
post	获取POST参数
param	自动判断请求类型获取GET、POST或者PUT参数
request	获取REQUEST 参数
put		获取PUT 参数
session	获取 $_SESSION 参数
cookie	获取 $_COOKIE 参数
server	获取 $_SERVER 参数
globals	获取 $GLOBALS参数

示例:

php 复制代码
echo I('get.id'); // 获取get请求中的id参数
echo I('get.'); // 获取get请求所有参数
echo I('param.age'); // 自动判断请求类型获取age 参数
echo I('sex'); // 相当于I('param.sex'),param可以简写
I('session.user_id',0); // 获取$_SESSION['user_id'] 如果不存在则默认为0
I('cookie.login'); // 从cookie中获取cookie名字为login的参数值
I('server.REQUEST_METHOD'); // 获取 $_SERVER['REQUEST_METHOD'] 

变量名不仅可以获取key=value模式的值,还可以获取PATHINFO(Restful)格式数据,例如:

复制代码
访问URL:   http://serverName/index.php/New/2013/06/01 
在后台获取参数时可以使用以下方式获取
 I('param.1'); // 输出2013
 I('param.2'); // 输出06
 I('param.3'); // 输出01

变量类型 可选参数有:

列如:

php 复制代码
I('get.id/d'); // 获取get方法中,参数名称为id,参数强制变量值转换为整型
I('post.name/s'); //  获取post方法中,参数名称为id,强制转换变量为字符串类型
I('post.ids/a'); //  获取post方法中,参数名称为id,强制变量转换为数组类型

可选参数:默认值

当请求参数用户未使用时,为避免业务出错,可以指定此参数,给指定参数一个默认值

例如:

php 复制代码
I('get.id/d',0);//获取get方法中,参数名称为id,参数强制变量值转换为整型,并且默认值为0
I('name',''); //从请求中获取name值,如果此参数不存在则提供空字符串

可选参数:过滤方法

A

方法A用于实例化控制器类,方便调用控制器中到方法与属性
语法

复制代码
A('[项目://][分组/]模块','控制器层名称')

在同级目录中:

复制代码
$User = A('User');//表示同目录的UserController

在其他目录中:

复制代码
$User = A('Admin/User');//表示同Admin目录的UserController

跨项目实例化(项目的目录要保持同级)

复制代码
$User = A('Admin://User');//Admin项目中的同级UserController

R

R方法是对A 方法的进一步补充和增强
语法

复制代码
R('[项目://][分组/]模块/操作',['参数'],['控制器层名称'])

注意点: 方法必须是public类型修饰

例如:

复制代码
$data = R('User/detail',array('5'));//表示调用UserController中的detail方法,并传入参数5

当方法为无参时

复制代码
$data = R('User/detail');

也支持跨分组和项目调用:

复制代码
R('Admin/User/detail',array('5'));//表示admin模块UserController中detail方法
R('Admin://User/detail',array('5'));//表示admin项目UserController中detail方法
相关推荐
BingoGo19 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack20 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
QQ5110082854 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe4 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5