总结ThinkPHP使用技巧经验分享(一)2013/02/2514:23thinkphphj评论上一篇返回找了一些使用THinkPHP的心得和技巧,分享给大家甚至一些手册上没提到的,这里也有约定:1.所有类库文件必须使用.class.php作为文件后缀,并且类名和文件名保持一致2.控制器的类名以Action为后缀3.模型的类名以Model为后缀,类名第一个字母须大写4.数据库表名全部采用小写,如:数据表名:前缀_表名模型类名:表名Model注:这里的表名第一个字母要大写创建对象:D('表名')注:这里的表名第一个字母要大写定义控制器类classIndexActionextendsAction{publicfunctionshow(){echo'这是新的show操作';}}然后在浏览器里面输入定义模型类:class表名ModelextendsModel{[//手动定义字段[可选]protected$fields=array('id','username','email','age','_pk'='id',//主键'_autoInc'=true//是否自增)]}记录的修改:$User=D(User)//实例化User对象$User-find(1)//查找id为1的记录$User-name='ThinkPHP'//把查找到的记录的名称字段修改为ThinkPHP$User-save()//保存修改的数据更新特定字段的值$User-setField('name','TopThink','id=1')同样可以支持对字段的操作$User-setField('score','(score+1)','id=1')新建记录,方法1:$User=newUserModel()//实例化User对象$User-字段名=字段值//给字段赋值$User-add()//添加记录新建记录,方法2:$data['字段名']=字段值;//给字段赋值$User=D('User');//实例化User对象$User-add($data);//$insertId,Add方法的返回值就是最新插入的主键值,可以直接获取。新增多条记录:$User=newUserModel()$data[0]['name']='ThinkPHP'$data[0]['email']='sjolzy@chen.com'$data[1]['name']='流年'$data[1]['email']='chen@sjolzy.cn'$UseraddAll($data)删除记录$User-find(2)$User-delete()//删除查找到的记录$User-delete('5,6')//删除主键为5、6的数据$User-deleteAll()//删除查询出来的所有数据记录查询$User-getDbFields()//获取当前数据字段$User-findAll();//查找所有记录$User-findAll('1,3,8')//查询主键为1,3,8的记录集$User-count()//获取记录数$User-max('score')//获取用户的最大积分$User-min('score','score0')//获取积分大于0的用户的最小积分$User-avg('字段名')//获取所有记录的字段值的平均值$User-sum('字段名')//统计字段值$User-getN(2,'score80','scoredesc')//返回符合条件的第2条记录$User-getN(2,'score80','scoredesc')//还可以获取最后第二条记录$User-first('score80','scoredesc')//如果要查询第一条记录,还可以使用$User-last('score80','scoredesc')//获取最后一条记录$User-top(5,'','scoredesc')//获取积分最高的前5条记录$User-getBy('name','liu21st')//跟据字段的字段值来查询记录$Model=newModel()//实例化一个model对象没有对应任何数据表$Model-query(select*fromthink_userwherestatus=1)$objrs=$Model-query(select*fromthink_userwherestatus=1)//自定义查询$Model-execute(updatethink_usersetname='thinkPHP'wherestatus=1)//用于更新和写入数据的sql操作,返回影响的记录数$User-startTrans()//启动事务$User-commit()//提交事务$User-rollback()//事务回滚模板:$this-assign('name',$value);//在Action类里面使用assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值$this-display()//输出模版文件批量赋值$array['name']='thinkphp'$array['email']='chen@sjolzy.cn'$array['phone']='12335678'$this-assign($array)$this-display()//调用User模块的read操作模版$this-display('edit')//调用User模块的edit操作模版$this-display('Member:read')//调用Member模块的read操作模版$this-display('Xp@User:edit')//调用Xp主题的User模块的edit操作模版$this-display('../Member/read.html')//直接指定模版文件的全名模板标签:{}或{//注释内容}//模板注释{$user['name']}//输出数组变量{$user:name}//输出对象的属性为了方便模板定义,无论输出的模板变量是数组还是对象,都可以用下列统一方式输出:{$user.name}如果是多维数组或者多层对象属性的输出,请使用下面的定义方式:{$user['sub']['name']}{$user:sub:name}使用函数:格式:{$varname|function1|function2=arg1,arg2,###}说明:{和$符号之间不能有空格,后面参数的空格就没有问题###表示模板变量本身的参数位置系统变量{$Think.server.script_name}//取得$_SERVER变量{$Think.session.session_id|md5}//获取$_SESSION变量{$Think.get.pageNumber}//获取$_GET变量{$Think.cookie.name}//获取$_COOKIE变量系统常量{$Think.const.__FILE__}{$Think.const.MODULE_NAME}特殊变量,由ThinkPHP系统定义的常量{$Think.version}//版本{$Think.now}//现在时间快捷输出(3.0及以后版本已去掉){:function(…)}//执行方法并输出返回值{~function}//执行方法不输出{@var}//输出Session变量{&var}//输出配置参数{%var}//输出语言变量{.var}//输出GET变量{^var}//输出POST变量{*var}//输出常量包含外部文件includefile=$tplName///用变量控制要导入的模版includefile=/Apps/home/Tpl/simple/Public/header.html///使用一个完整的文件名包含