thinkPHP的字母函数
2016-01-29 17:03
711 查看
A函数: 用于实例化Action 格式A($name,$layer='',$common=false)
应用例子:
B函数: 执行某个行为就是在项目开始之前,执行这个行为定义的所有函数,支持2个参数,第二个参数支持需要接受一个数组 格式B($name, &$params=NULL)
应用例子:
C函数: 获取和设置配置参数 支持批量定义 格式C($name=null, $value=null)
应用例子:
获取值:
获取所有设置:C(); 不传递任何参数,返回一个包含所有设置的数组。
获取指定配置:C('URL_MODEL') 这样就能得到URL_MODEL的配置信息
获取指定二维数组配置:C("array.name"),这样就返回数组array下的key为name所对应的值
设置值:
为二维数组赋值C("array.name","value"),原理同上(获取array.name的值),后边的value是值
批量赋值:
这样直接将数组里的值赋值了
判断是否赋值:
C("?URL_MODEL")这样前边加个"?",如果已经赋值,则返回true
需要说明的是,这里虽然更改了配置的值,但是仅仅是这个页面做了更改,到下个页面就不起作用了,如果想改就永久更改,那么需要配合F函数,将配置文件写入config.php才行。
D函数: 用于实例化Model 格式 D($name='',$layer='')
应用例子:
D函数有2个优点,一是如果之前实例化过这个Model,那么就不再实例化了,节省资源;二是方便调试,如果不存在 这个Model,会抛出TP异常,非常人性化。
如果访问本项目的Model直接D("Model名称");就可以了,如果打算跨项目访问,就使用 D("Model名称","项目名称")。
E:抛出异常处理
F函数: 快速文件数据读取和保存 针对简单类型数据 字符串、数组 格式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)
标记位置
G方法的第一个用法就是标记位置G('begin');
运行时间统计
标记位置后,我们就可以再次调用G方法进行区间统计了,如果这个时候end位置还没被标记过,则会自动把当前位置标记为end标签
如果你的环境支持内存占用统计的话,还可以使用G方法进行区间内存开销统计(单位为kb),第三个参数使用m表示进行内存开销统计。例如:echo G('begin','end','m').'kb';如果环境不支持内存统计,则该参数无效,仍然会进行区间运行时间统计。
I函数: 获取输入参数 支持过滤和默认值 格式I($name,$default='',$filter=null)
正如你所见到的一样,I方法是ThinkPHP众多单字母函数中的新成员,其命名来自于英文Input(输入),主要用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:I('变量类型.变量名',['默认值'],['过滤方法'])。变量类型是指请求方式或者输入类型,包括:
注意:变量类型不区分大小写。
变量名则严格区分大小写。
默认值和过滤方法均属于可选参数。
L函数: 获取和设置语言定义(不区分大小写) 格式L($name=null, $value=null)支持批量设置,不区分大小写
M函数: 用于实例化一个没有模型文件的Model 格式M($name='', $tablePrefix='',$connection='')。是常用的字母函数
应用例子:
1、实例化基础模型(Model) 类
在没有定义任何模型的时候,我们可以使用下面的方法实例化一个模型类来进行操作,这种方法最简单高效,因为不需要定义任何的模型类,所以支持跨项目调用。缺点也是因为没有自定义的模型类,因此无法写入相关的业务逻辑,只能完成基本的CURD操作。
第一种方式实例化因为没有模型类的定义,因此很难封装一些额外的逻辑方法,不过大多数情况下,也许只是需要扩展一些通用的逻辑,那么就可以尝试下面一种方法。因为系统的模型类都能够自动加载,因此我们不需要在实例化之前手动进行类库导入操作。模型类CommonModel必须继承Model。我们可以在CommonModel类里面定义一些通用的逻辑方法,就可以省去为每个数据表定义具体的模型类,如果你的项目已经有超过100个数据表了,而大多数情况都是一些基本的CURD操作的话,只是个别模型有一些复杂的业务逻辑需要封装,那么第一种方式和第二种方式的结合是一个不错的选择。
M方法有三个参数,第一个参数是模型名称(可以包括基础模型类和数据库),第二个参数用于设置数据表的前缀(留空则取当前项目配置的表前缀),第三个参数用于设置当前使用的数据库连接信息(留空则取当前项目配置的数据库连接信息)。如果你操作的数据库需要不同的用户账号,可以传入数据库的连接信息,例如:
N函数: 设置和获取统计数据 格式N($key, $step=0,$save=false)
应用例子:
如果你希望计数器每次增加5,那么可以改变步进值,例如:
N('read',5);
需要注意的是,N方法页面执行完毕后的统计结果不会带入下次统计。
R函数: 远程调用模块的操作方法 格式R($url,$vars=array(),$layer='')。R函数是比A函数更简便的方法
使用例子:
S函数: 缓存管理 格式S($name,$value='',$options=null)
T函数: 获取模版文件 格式T($template='',$layer='')
U函数: URL组装 支持不同URL模式 格式U($url='',$vars='',$suffix=true,$redirect=false,$domain=false)U函数是很强大的一个函数,它主要是进行URL组装,同时支持不同模式和路由
应用例子:
取得当前模块的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='')
/** * 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='')
相关文章推荐
- MyBatis调用存储过程,含有返回结果集、return参数和output参数
- 重置PHPCMS后台登录密码
- Web Api 输出Json格式数据,中文要进行Unicode编码(模拟PHP的json_encode输出)
- textprogerss
- yii1.*的增删改查
- PHP面向对象深入研究之【继承】,减少代码重复
- php接口数据加密、解密、验证签名代码实例
- 说一下output子句
- php浮点数的比较
- phpcms后台登录验证码删除
- 使用phpexecel类库导出数据
- 关于php 类 方法重定义的问题
- php学习第二天:代码重构
- 做为一个PHP的工作者第一篇blog
- 去掉phpcms的模板缓存
- TProfiler部署文档--笔记
- Yii:t()的用法
- phpunit学习
- PHP学习(2)——运行环境搭建
- PHP学习(2)——运行环境搭建