当前位置: 首页 > news >正文

ThinkPHP 3.2 常用内置函数

ThinkPHP 3.2

  • 内置函数
    • C
    • 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参数

示例:

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'); // 输出2013I('param.2'); // 输出06I('param.3'); // 输出01

变量类型可选参数有:
![](https://img-blog.csdnimg.cn/01d7a1ee6b154c0b9838dfd880e75549.png
列如:

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

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

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方法

相关文章:

ThinkPHP 3.2 常用内置函数

ThinkPHP 3.2 内置函数CDM疑问: D与M方法的相同点与不同点IAR 内置函数 C C方法是用于获取或修改,系统配置参数 语法: 获取:C(需要获得的配置参数Name) $value C(config_name);设置:C&…...

STM32F4_USB读卡器(USB_Slave)/USB U盘(Host)

前言 STM32F4芯片自带了USB OTG FS(FS,即全速,12Mbps)和USB OTG HS,支持USB Host和USB Device。 1. USB简介 USB,是英文Universal Serial BUS(通用串行总线)的缩写,是一…...

【网络安全入门】学习网络安全必须知道的100 个网络基础知识

前言 先领取资料再阅读哦 【282G】网络安全&黑客技术零基础到进阶全套学习大礼包(附面试题答案),免费分享! 【282G】网络安全&黑客技术零基础到进阶全套学习大礼包(附面试题答案),免…...

96核的AMD锐龙Threadripper PRO 7995WX性能如何?

AMD新推出的锐龙Threadripper 7000系列可以说是目前最快的工作站处理器,最顶级的锐龙Threadripper PRO 7995WX拥有96个Zen 4内核,共192线程,基础频率2.5GHz,加速频率5.15GHz,拥有384MB L3缓存和多达128条PCI-E 5.0通道…...

TS和JS的区别

1.TS和JS的区别 ts 是js的超集。 从执行环境上来看,浏览器、node.js 可以直接执行js,但不能执行ts;编译层面,Ts 有编译阶段,js 没有,只有转译阶段和lint阶段;ts更难写一点,但类型更安全。ts 代码写出来就是…...

顺序栈的实现----数据结构

栈的概念 对于栈(Stack),后进先出(Last In First Out,LIFO),栈也是一种线性表,只不过是一种操作受限的线性表,只能在一端操作,也就是不允许在中间进行查找、…...

k8s calico 网络原理

一、cluster ip Cluster IP 是 Kubernetes 中 Service 的 IP 地址,它是一个虚拟 IP 地址,用于集群内的 Pod 相互通信。 例如: Cluster IP:2.2.2.2负载的真实Pod IP:1.1.1.1 场景: Pod A 的 IP 地址是 …...

【Python学习笔记】循环

Python中有两种类型的循环: while 循环 和 for 循环 1. while 循环 while循环是: 检查一个条件表达式,只要条件表达式计算结果为True 时, 就执行下面缩进的代码。 如此反复,直到条件表达式计算结果为False时,结束 循…...

1 如何入门TensorFlow

近年来人工智能的火爆吸引了很多人,网上相关的热门课程报名的人很多,但是坚持下去的人却少。那些晦涩的原理没有一定知识的积累很难能理解。 如果你对人工智能感兴趣,且想利用人工智能去实现某项功能,而不是对人工智能本身感兴趣&…...

QTday02(常用类、UI界面下的开发、信号与槽)

今日任务 1. 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#x…...

自然语言处理---RNN经典案例之使用seq2seq实现英译法

1 seq2seq介绍 1.1 seq2seq模型架构 seq2seq模型架构分析: seq2seq模型架构,包括两部分分别是encoder(编码器)和decoder(解码器),编码器和解码器的内部实现都使用了GRU模型,这里它要完成的是一个中文到英文的翻译:欢迎…...

Python【判断列表的存在与否关系】

要求:使用列表判断一个列表是否在另外一个列表中 代码如下: list1 [1, 2, 6, 8, 7, 10, 5] print("列表1为:", list1) list2 [2, 6, 5, 10] print("列表2为:",list2) res False a 0 for i in list2:if …...

MyBatis篇---第三篇

系列文章目录 文章目录 系列文章目录一、如何执行批量插入?二、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?三、MyBatis实现一对一有几种方式?具体怎么操作的?一、如何执行批量插入? 首先,创建一个简单的insert语句: <insert id=”…...

uview1.0部分机型u-input组件禁用后无法触发click事件

最近&#xff0c;线上的一个 App 收到用户反馈&#xff0c;输入框禁用状态下点击无法拉起模态框。找了一下身边可用机型进行了测试&#xff0c;起初所有机型都没有复现这个问题&#xff0c;突然有一天 Redmi K30S Ultra 出现了异常&#xff0c;点击输入框无法触发点击事件&…...

Arduino IDE + Esp32 Cam + 实现视频流 + 开发环境部署

1、开发环境 Arduino ide 版本&#xff1a;2.2.1 esp32工具&#xff1a;2.0.5 示例代码 #include "esp_camera.h" #include <WiFi.h>// // WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality // Ensure ESP32 Wrover Modu…...

Day4力扣打卡

打卡记录 同积元组&#xff08;哈希表 排列组合&#xff09; 链接 思路&#xff1a;用哈希表将数组中出现的两不同数乘积依次记录&#xff0c;将出现两次以上的乘积组通过排列组合计算总情况个数。 class Solution { public:int tupleSameProduct(vector<int>& num…...

Paper Reading:《Consistent-Teacher: 减少半监督目标检测中不一致的伪目标》

目录 简介工作重点方法ASA, adaptive anchor assignmentFAM-3D, 3D feature alignment moduleGMM, Gaussian Mixture Model实施细节 实验与SOTA的比较消融实验 总结 简介 题目&#xff1a;《Consistent-Teacher: Towards Reducing Inconsistent Pseudo-targets in Semi-supervi…...

设计模式:观察者模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

简介&#xff1a; 观察者模式&#xff0c;它是一种行为型设计模式&#xff0c;它允许一个对象自动通知其依赖者&#xff08;观察者&#xff09;状态的变化。当被观察者的状态发生改变时&#xff0c;它会通知所有的观察者对象&#xff0c;使他们能够及时做出响应。在观察者模式…...

kotling构造函数

Kotlin-继承与构造函数 - 简书 (jianshu.com) Kotlin语言中的继承与构造函数&#xff08;详解&#xff09;_kotlin 继承 构造函数_young螺母的博客-CSDN博客...

SpringMVC - 详解RESTful

文章目录 1. 简介2. RESTful的实现3.HiddenHttpMethodFilter4. RESTful案例1、准备工作2、功能清单3、具体功能&#xff1a;访问首页a>配置view-controllerb>创建页面 4、具体功能&#xff1a;查询所有员工数据a>控制器方法b>创建employee_list.html 5、具体功能&a…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...