thinkPHP的字母函数

A函数: 用于实例化Action 格式A($name,$layer='',$common=false)

/**
 * A函数用于实例化Action 格式:[项目://][分组/]模块
 * @param string $name Action资源地址
 * @param string $layer 控制层名称
 * @param boolean $common 是否公共目录
 * @return Action|false
 */
A($name,$layer='',$common=false)

应用例子:

//使用A函数
$index=A("Index");//实例化IndexAction
echo $index->myHello();//调用myHello()方法
//等价于下面的方法
$index=new IndexAction();
echo $index->myHello();

B函数: 执行某个行为就是在项目开始之前,执行这个行为定义的所有函数,支持2个参数,第二个参数支持需要接受一个数组 格式B($name, &$params=NULL)

/**
 * 执行某个行为
 * @param string $name 行为名称
 * @param Mixed $params 传入的参数
 * @return void
 */
B($name, &$params=NULL)

应用例子:

B('app_begin',array("name"=>"tdweb","time"=>time()));


C函数: 获取和设置配置参数 支持批量定义 格式C($name=null, $value=null)

/**
 * 获取和设置配置参数 支持批量定义
 * @param string|array $name 配置变量
 * @param mixed $value 配置值
 * @return mixed
 */
C($name=null, $value=null)

应用例子:

获取值:  
获取所有设置:C(); 不传递任何参数,返回一个包含所有设置的数组。
获取指定配置:C('URL_MODEL') 这样就能得到URL_MODEL的配置信息
获取指定二维数组配置:C("array.name"),这样就返回数组array下的key为name所对应的值

设置值:
为二维数组赋值C("array.name","value"),原理同上(获取array.name的值),后边的value是值

批量赋值:

$test=array("URL_MODEL"=>1,"THIN_MODEL"=>true");
C($test);

这样直接将数组里的值赋值了

判断是否赋值:
C("?URL_MODEL")这样前边加个"?",如果已经赋值,则返回true

需要说明的是,这里虽然更改了配置的值,但是仅仅是这个页面做了更改,到下个页面就不起作用了,如果想改就永久更改,那么需要配合F函数,将配置文件写入config.php才行。

D函数: 用于实例化Model 格式 D($name='',$layer='')

/**
 * D函数用于实例化Model 格式 项目://分组/模块
 * @param string $name Model资源地址
 * @param string $layer 业务层名称
 * @return Model
 */
D($name='',$layer='')

应用例子:

D函数有2个优点,一是如果之前实例化过这个Model,那么就不再实例化了,节省资源;二是方便调试,如果不存在 这个Model,会抛出TP异常,非常人性化。

如果访问本项目的Model直接D("Model名称");就可以了,如果打算跨项目访问,就使用 D("Model名称","项目名称")。

$user2=D('User');//与下一行代码等价
$user=new \Test\Model\UserModel();

E:抛出异常处理

/**
 * 抛出异常处理
 * @param string $msg 异常消息
 * @param integer $code 异常代码 默认为0
 * @return void
 */
E($msg, $code=0)

F函数: 快速文件数据读取和保存 针对简单类型数据 字符串、数组 格式F($name, $value='', $path=DATA_PATH)

/**
 * 快速文件数据读取和保存 针对简单类型数据 字符串、数组
 * @param string $name 缓存名称
 * @param mixed $value 缓存值
 * @param string $path 缓存路径
 * @return mixed
 */
F($name, $value='', $path=DATA_PATH) 

应用例子:

快速保存数据:F("mydata","这里是要保存的数据"),这样就在项目Data目录下保存了一个名叫mydata.php的文件,里边的内容是该函数的第二个参数。
指定保存时间 :F("mydata","这里是要保存的数据","60"),这样,如果下次再访问,间隔大于60秒则删除次缓存文件。

指定保存目录:F("mydata","这里是要保存的数据","60",DATA_PATH) ,这样就指定保存在data目录下
立即删除缓存:F("mydata",null),第二个参数传递一个null值,这样就删除了mydate这个缓存
读取缓存数据:F("mydata"),这样就读取这个缓存了

G函数: 记录和统计时间(微秒)和内存使用情况 格式G($start,$end='',$dec=4)

/**
 * 记录和统计时间(微秒)和内存使用情况
 * 使用方法:
 * <code>
 * G('begin'); // 记录开始标记位
 * // ... 区间运行代码
 * G('end'); // 记录结束标签位
 * echo G('begin','end',6); // 统计区间运行时间 精确到小数后6位
 * echo G('begin','end','m'); // 统计区间内存使用情况
 * 如果end标记位没有定义,则会自动以当前作为标记位
 * 其中统计内存使用需要 MEMORY_LIMIT_ON 常量为true才有效
 * </code>
 * @param string $start 开始标签
 * @param string $end 结束标签
 * @param integer|string $dec 小数位或者m 
 * @return mixed
 */
G($start,$end='',$dec=4)

标记位置
G方法的第一个用法就是标记位置G('begin');
运行时间统计
标记位置后,我们就可以再次调用G方法进行区间统计了,如果这个时候end位置还没被标记过,则会自动把当前位置标记为end标签

G('begin');	
// ...其他代码段
print_r(U("/UserController"));
G('end');
// ...也许这里还有其他代码
// 进行统计区间
echo G('begin','end').'s';exit();//最后一位是小数点的位数,可根据需要修改,默认四位,单位是S
内存开销统计
如果你的环境支持内存占用统计的话,还可以使用G方法进行区间内存开销统计(单位为kb),第三个参数使用m表示进行内存开销统计。例如:echo G('begin','end','m').'kb';如果环境不支持内存统计,则该参数无效,仍然会进行区间运行时间统计。

I函数: 获取输入参数 支持过滤和默认值 格式I($name,$default='',$filter=null)

/**
 * 获取输入参数 支持过滤和默认值
 * 使用方法:
 * <code>
 * I('id',0); 获取id参数 自动判断get或者post
 * I('post.name','','htmlspecialchars'); 获取$_POST['name']
 * I('get.'); 获取$_GET
 * </code> 
 * @param string $name 变量的名称 支持指定类型
 * @param mixed $default 不存在的时候默认值
 * @param mixed $filter 参数过滤方法
 * @return mixed
 */
I($name,$default='',$filter=null)

正如你所见到的一样,I方法是ThinkPHP众多单字母函数中的新成员,其命名来自于英文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.name'); // 相当于 $_GET['name']
I('get.'); // 获取整个$_GET 数组

L函数: 获取和设置语言定义(不区分大小写) 格式L($name=null, $value=null)支持批量设置,不区分大小写

/**
 * 获取和设置语言定义(不区分大小写)
 * @param string|array $name 语言变量
 * @param string $value 语言值
 * @return mixed
 */
L($name=null, $value=null)

M函数: 用于实例化一个没有模型文件的Model 格式M($name='', $tablePrefix='',$connection='')。是常用的字母函数

/**
 * M函数用于实例化一个没有模型文件的Model
 * @param string $name Model名称 支持指定基础模型 例如 MongoModel:User
 * @param string $tablePrefix 表前缀
 * @param mixed $connection 数据库连接信息
 * @return Model
 */
M($name='', $tablePrefix='',$connection='')

应用例子:

1、实例化基础模型(Model) 类
在没有定义任何模型的时候,我们可以使用下面的方法实例化一个模型类来进行操作,这种方法最简单高效,因为不需要定义任何的模型类,所以支持跨项目调用。缺点也是因为没有自定义的模型类,因此无法写入相关的业务逻辑,只能完成基本的CURD操作。

//实例化User模型
$User = M('User');
//执行其他的数据操作
$User->select();
//等效于
$User = new Model('User');
2、实例化其他公共模型类
第一种方式实例化因为没有模型类的定义,因此很难封装一些额外的逻辑方法,不过大多数情况下,也许只是需要扩展一些通用的逻辑,那么就可以尝试下面一种方法。因为系统的模型类都能够自动加载,因此我们不需要在实例化之前手动进行类库导入操作。模型类CommonModel必须继承Model。我们可以在CommonModel类里面定义一些通用的逻辑方法,就可以省去为每个数据表定义具体的模型类,如果你的项目已经有超过100个数据表了,而大多数情况都是一些基本的CURD操作的话,只是个别模型有一些复杂的业务逻辑需要封装,那么第一种方式和第二种方式的结合是一个不错的选择。

$User = M('CommonModel:User');
//该用法其实等效于:
$User = new CommonModel('User');
3、传入表前缀、数据库和其他信息
M方法有三个参数,第一个参数是模型名称(可以包括基础模型类和数据库),第二个参数用于设置数据表的前缀(留空则取当前项目配置的表前缀),第三个参数用于设置当前使用的数据库连接信息(留空则取当前项目配置的数据库连接信息)。如果你操作的数据库需要不同的用户账号,可以传入数据库的连接信息,例如:

$User = M('User','think_','mysql://user_a:1234@localhost:3306/thinkphp');

N函数: 设置和获取统计数据 格式N($key, $step=0,$save=false)

/**
 * 设置和获取统计数据
 * 使用方法:
 * <code>
 * N('db',1); // 记录数据库操作次数
 * N('read',1); // 记录读取次数
 * echo N('db'); // 获取当前页面数据库的所有操作次数
 * echo N('read'); // 获取当前页面读取次数
 * </code> 
 * @param string $key 标识位置
 * @param integer $step 步进值
 * @return mixed
 */
N($key, $step=0,$save=false)

应用例子:

如果你希望计数器每次增加5,那么可以改变步进值,例如:
N('read',5);
需要注意的是,N方法页面执行完毕后的统计结果不会带入下次统计。

R函数: 远程调用模块的操作方法 格式R($url,$vars=array(),$layer='')。R函数是比A函数更简便的方法

/**
 * 远程调用模块的操作方法 URL 参数格式 [项目://][分组/]模块/操作
 * @param string $url 调用地址
 * @param string|array $vars 调用参数 支持字符串和数组 
 * @param string $layer 要调用的控制层名称
 * @return mixed
 */
R($url,$vars=array(),$layer='')

使用例子:

$index=R("Index","myHello");  
echo $index;
//等价于
$index=A("Index");
echo $index->myHello();

S函数: 缓存管理 格式S($name,$value='',$options=null)

/**
 * 缓存管理
 * @param mixed $name 缓存名称,如果为数组表示进行缓存设置
 * @param mixed $value 缓存值
 * @param mixed $options 缓存参数
 * @return mixed
 */
S($name,$value='',$options=null) 
S函数是全局缓存读写函数,和C类似,不过是直接写成文件的哦,写在Temp目录下,不过在缓存有一点需要注意,如果缓存名称是aaa,那么缓存生成的文件名称就是md5("aaa")的值,值得注意。

T函数: 获取模版文件 格式T($template='',$layer='')

/**
 * 获取模版文件 格式 项目://分组@主题/模块/操作
 * @param string $name 模版资源地址
 * @param string $layer 视图层(目录)名称
 * @return string
 */
T($template='',$layer='')


U函数: URL组装 支持不同URL模式 格式U($url='',$vars='',$suffix=true,$redirect=false,$domain=false)U函数是很强大的一个函数,它主要是进行URL组装,同时支持不同模式和路由

/**
 * URL组装 支持不同URL模式
 * @param string $url URL表达式,格式:'[分组/模块/操作#锚点@域名]?参数1=值1&参数2=值2...'
 * @param string|array $vars 传入的参数,支持数组和字符串
 * @param string $suffix 伪静态后缀,默认为true表示获取配置值
 * @param boolean $redirect 是否跳转,如果设置为true则表示跳转到该URL地址
 * @param boolean $domain 是否显示域名
 * @return string
 */
U($url='',$vars='',$suffix=true,$redirect=false,$domain=false)

应用例子:

取得当前模块的Action地址 :U("/nowMethod");
取得当前模块的Action地址,并传递参数:U("/nowMethod?params=test");(如果不习惯上边那种方式,可以使用U("/nowMethod",array("params"=>"test");这样的数组方式传递参数,效果是一样的)

访问其他模块的方法:U("Other/otherMethod"),这样就是访问Other模块下的otherMethod方法

跨项目访问:U("appname://Other/otherMethod");
使用路由访问:U("appName://routeName@moduleName/actionName?params");

W函数: 渲染输出Widget  格式W($name, $data=array(), $return=false,$path='')

/**
 * 渲染输出Widget
 * @param string $name Widget名称
 * @param array $data 传入的参数
 * @param boolean $return 是否返回内容 
 * @param string $path Widget所在路径
 * @return void
 */
W($name, $data=array(), $return=false,$path='')









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值