兄弟连thinkphp笔记.doc_第1页
兄弟连thinkphp笔记.doc_第2页
兄弟连thinkphp笔记.doc_第3页
兄弟连thinkphp笔记.doc_第4页
兄弟连thinkphp笔记.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

thinkphp1. 配置gvim 打开安装目录下的_vimrc文件,添加 set nu! 显示行数 colorscheme darkblue 背景颜色设置为深蓝色 gvim配置不自动生成备份文件默认情况下用gvim编辑文件时,会自动生成带的备份文件。如果不想在编辑文件时自动生成备份文件的话,可以这么做:打开gvim安装目录下的vimrc_example.vim,将其中的如下部分中的else语句用引号注释掉:if has(vms)set nobackup do not keep a backup file, use versions insteadelseset backup keep a backup file即将上面四句改为:if has(vms)set nobackup do not keep a backup file, use versions instead else set backup keep a backup file里,else部分用双引号注释掉即可。set backup是设置使用自动生成备份文件的命令。 windows上gvim的编码设置windows系统默认的编码是cp936,所以用gvim一打开文件,默认是用gb2312编码打开的。这导致很多时候打开的文件是乱码,不能正常显示,那要怎么解决这个问题呢?很简单,看下面的设定:打开gvim,到菜单栏找到“编辑”,在下拉菜单找到“启动设定” 点击 “启动设定” 进去,你会看到相应的配置文件 在文件的末尾加入如下设定:set encoding=utf-8set fileencodings=utf-8,chinese,latin-1if has(win32)set fileencoding=chineseelseset fileencoding=utf-8endifsource $vimruntime/delmenu.vimsource $vimruntime/menu.vimlanguage messages zh_cn.utf-8保存后退出gvim,重新启动,惊喜出现了,乱码不见了,是不是很简单,可以动手试一试了!2. 配置项目文件(_root_homeconfconfig.php)url_pathinfo_depr=-,/修改url的分隔符tmpl_l_delim=, /修改右定界符db_type=mysql, /设置数据库类型db_host=localhost,/设置主机db_name=thinkphp,/设置数据库名db_user=root, /设置用户名db_pwd=, /设置密码db_port=3306, /设置端口号db_prefix=tp_, /设置表前缀db_dsn=mysql:/root:localhost:3306/thinkphp,/使用dsn方式配置数据库信息show_page_trace=true,/开启页面tracetmpl_template_suffix=.html,/更改模板文件后缀名tmpl_file_depr=_,/修改模板文件目录层次tmpl_detect_theme=true,/自动侦测模板主题theme_list=your,my,/支持的模板主题列表tmpl_parse_string=array( /添加自己的模板变量规则_css_=_root_./public/css,_js_=_root_./public/js,),layout_on=true,/开启模板渲染url_case_insensitive=true,/url不区分大小写url_html_suffix=html|shtml|xml,/限制伪静态的后缀app_group_list = home,admin, /项目分组设定default_group = home, /默认分组3. 项目配置(_root_index.php)4. 开启调试功能 开启调试功能(在项目文件夹下的index.php中)define(app_debug,true); 我们需要设置配置文件(conf/config.php),开启页面traceshow_page_trace=true,/开启页面trace5. url的4种访问方式 pathinfo 模式 - 重点!http:/域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2 普通模式http:/域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2 rewrite模式http:/域名/项目名/模块名/方法名/键1/值1/键2/值2 兼容模式http:/域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值26. 获取url中的参数$id=$_getid;7. 获取表单中的数据html中的form表单如下 用户名: 密    码: 验证码: 获取表单数据的action对象函数如下public function do_login()echo fasdfasdfsd;dump($_postusername); 注:如果表单中的method=get,则上述函数中的$_post要改为$_get8. 超链接地址的写法同项目下的超链接可不写ip地址 如要访问项目thinkphp下的useraction中的delete函数,可写为 a href=/thinkphp/index.php/user/delete?id=delete但是为了防止因项目名称(thinkphp)的更改,导致系统不能使用,可使用”_url_”替换”/thinkphp/index.php/user/”,如以上地址改写为a href=_url_/delete?id=delete9. 将两个字符串合并 $m-where(id=.$_getid)-delete();/也可以是单引号10. thinkphp 3 的输出 通过 echo 等php原生的输出方式在页面中输出 通过display方法输出,如想分配变量可以使用assign方法,如在action中assign(name,yinliang); /给变量name分配值yinliang $this-display(); /输出hometplindexindex.html public function show()echo show: hello world!; ?在hometplindexindex.html中要访问name变量可以在文件中添加$name(修改了左右定界符的则把,分别修改为修改后的左右定界符) 修改左右定界符(为了防止$data 与jquery语法混淆)休要修改配置文件(conf/config.php)中的配置项tmpl_l_delim=, /修改右定界符11. thinkphp 3 的模型使用 (与数据库链接,操作数据库) 配置数据库(在conf/config.php中配置数据库相关信息) db_type=mysql, /设置数据库类型db_host=localhost,/设置主机db_name=thinkphp,/设置数据库名db_user=root, /设置用户名db_pwd=, /设置密码db_port=3306, /设置端口号db_prefix=tp_, /设置表前缀加表前缀是为了更好的区分表,比如 cw_代表财务 cg_代表采购,如果没有表前缀,则将tp_去掉即可也可以使用dsn方法进行配置db_dsn=mysql:/root:localhost:3306/thinkphp,/使用dsn方式配置数据库信息 如果两种方式同时存在,以dsn方式为优先 在action的index函数中获取值 public function index()$m=new model(user);/记住u大写 $arr=$m-select();/user表中的所有数据都被放到数组$arr中$this-assign(name,$arr1username);/将name赋值为数组$arr中下标为/1的元素的username的值 $this-display(); 还有一种简单实用模型的方式m() 等效为 new model();$m=m(user);$arr=$m-select(); 使用模型的实例可以对数据进行操作,操作的工作一般就是对数据库进行 增删改查 curd增 -c create $m-add()删 -d delete $m-delete()改 -u update $m-save()查 -r read $m-select() 模板可以遍历数组html页面中-在action中的index中给array赋值public function index() $m=new model(user); $arr=$m-select(); $this-assign(array,$arr); $this-assign(name,$arr1username); $this-display();12. thinkphp 3.1.2 curd特性 thinkphp 3 读取数据 对数据的读取 read$m=new model(user);$m=m(user);select$m-select();/获取所有数据,以数组形式返回find$m-find($id);/获取单条数据getfield(字段名)/获取一个具体的字段值$arr=$m-where(id=2)-getfield(username); thinkphp 3 创建数据对数据的添加 create$m=new model(user);$m=m(user);$m-字段名=值$m-add();返回值是新增的id号代码示例:public function add()$m=new model(user);$m-username=$_postusername;$m-sex=$_postsex;$newid=$m-add();if($newid0)$this-success(add new user successfully!,index);else$this-error(add new user failed!,index); thinkphp 3 删除数据$m=m(user);$m-delete(2); /删除id为2的数据$m-where(id=2)-delete(); /与上面效果相同,也是删除id为2的数据返回值是受影响行数代码示例:public function delete() $id=$_getid; $m=new model(user); var_dump($id);/ $m-delete(11); $count=$m-where(id=.$_getid)-delete(); if($count0) $this-success(data have been delete successfully!); / $this-success(数据删除成功!); else $this-error(the operation of deleting data exit error!); / $this-error(数据删除失败!); thinkphp 3 更新数据$m=m(user);$dataid=1;$datausername=ztz2;$m-save($data); 返回值是受影响行数代码示例:public function update()$m=new model(user);$dataid=$_postid;$datausername=$_postusername;$datasex=$_postsex;$count=$m-save($data);if($count0)$this-success(data have been modify successfully!,index);else$this-error(the operation of modifing data exit error!,index);13. thinkphp 3.1.2 查询方式find只能查询一天记录,select可以查询多条记录 普通查询方式 字符串$arr=$m-where(sex=0 and username=gege)-find(); 数组 $datasex=0;$datausername=gege;$arr=$m-where($data)-find();注意:这种方式默认是and的关系,如果使用or关系,需要添加数组值$datasex=0;$datausername=gege;$data_logic=or; 表达式查询方式$dataid=array(lt,6);$arr=$m-where($data)-select();eq 等于neq不等于gt 大于egt大于等于lt 小于elt小于等于示例代码:public function show()$m=new model(user);$dataid=array(lt,25);$arr=$m-where($data)-select();var_dump($arr);$this-display(); like 模糊查询$datausername=array(like,%ge);/查询username以ge结尾的user$datausername=array(like,%ge%);/查询username包含ge的user$arr=$m-where($data)-select(); notlike$datausername=array(notlike,%ge%); /查询username不包含ge的user $arr=$m-where($data)-select(); 注意:如果一个字段要匹配多个通配符$datausername=array(like,array(%ge%,%2%,%五%),and);/如果没有第三个值,默认关系是or关系$arr=$m-where($data)-select(); between$dataid=array(between,array(5,7);$arr=$m-where($data)-select();/select * from tp_user where ( (id between 5 and 7 ) )$dataid=array(not between,array(5,7);/注意,not 和 between中间一定要有空格$arr=$m-where($data)-select(); in$dataid=array(in,array(4,6,7);$arr=$m-where($data)-select();/select * from tp_user where ( id in (4,6,7) )$dataid=array(not in,array(4,6,7);$arr=$m-where($data)-select();/select * from tp_user where ( id not in (4,6,7) ) 区间查询$dataid=array(array(gt,4),array(lt,10);/默认关系是 and 的关系/select * from tp_user where ( (id 4) and (id where($data)-count(); max /获取最大数echo $m-max(id); min /获取最小数echo $m-min(id); avg /获取平均数echo $m-avg(id); sum /获取总和echo $m-sum(id); sql直接查询 query 主要数处理读取数据的成功返回数据的结果集失败返回boolean false$m=m();$result=$m-query(select * from tp_user where id 50);var_dump($result); execute 用于更新个写入操作成功返回影响行数失败返回boolean false$m=m();$result=$m-execute(insert into tp_user(username) values(ztz3);var_dump($result);14. thinkphp 3.1.2 连贯操作 php中类的构造方法所有类的构造方法都如下,只是参数可以不一样function _construct($tablename) 字符串操作函数 addslashes: 字符串加入斜线。 bin2hex: 二进位转成十六进位。 chop: 去除连续空白。 chr: 返回序数值的字符。 chunk_split: 将字符串分成小段。 convert_cyr_string: 转换古斯拉夫字符串成其它字符串。 crypt: 将字符串用 des 编码加密。 echo: 输出字符串。 explode: 切开字符串。 flush: 清出输出缓冲区。 get_meta_tags: 抽出文件所有 meta 标记的资料。 htmlspecialchars: 将特殊字符转成 html 格式。 htmlentities: 将所有的字符都转成 html 字符串。 implode: 将数组变成字符串。 join: 将数组变成字符串。 ltrim: 去除连续空白。 md5: 计算字符串的 md5 哈稀。 nl2br: 将换行字符转成 。 ord: 返回字符的序数值。 parse_str: 解析 query 字符串成变量。 print: 输出字符串。 printf: 输出格式化字符串。 quoted_printable_decode: 将 qp 编码字符串转成 8 位字符串。 quotemeta: 加入引用符号。 rawurldecode: 从 url 专用格式字符串还原成普通字符串。 rawurlencode: 将字符串编码成 url 专用格式。 setlocale: 配置地域化信息。 similar_text: 计算字符串相似度。 soundex: 计算字符串的读音值 sprintf: 将字符串格式化。 strchr: 寻找第一个出现的字符。 strcmp: 字符串比较。 strcspn: 不同字符串的长度。 strip_tags: 去掉 html 及 php 的标记。 stripslashes: 去掉反斜线字符。 strlen: 取得字符串长度。 strrpos: 寻找字符串中某字符最后出现处。 strpos: 寻找字符串中某字符最先出现处。 strrchr: 取得某字符最后出现处起的字符串。 strrev: 颠倒字符串。 strspn: 找出某字符串落在另一字符串遮罩的数目。 strstr: 返回字符串中某字符串开始处至结束的字符串。 strtok: 切开字符串。 strtolower: 字符串全转为小写。 strtoupper: 字符串全转为大写。 str_replace: 字符串取代。 strtr: 转换某些字符。 substr: 取部份字符串。 trim: 截去字符串首尾的空格。 ucfirst: 将字符串第一个字符改大写。 ucwords: 将字符串每个字第一个字母改大写。 常用连贯操作 where 帮助我们设置查询条件 order对结果进行排序(desc降序排列,asc升序排列)$arr=$m-order(id desc)-select();$arr=$m-order(array(id=desc,sex=asc)-select();$arr=$m-where($data)-order(id asc)-select(); limit限制结果limit(2,5)/从第二条开始取出5条limit(2,5) /从第二条开始取出5条limit(10)/limit(0,10) field设置查询字段field(username as name,id)/获取username,id字段,并且将username字段重命名为namefield(array(username=name,id)/同上field(id,true) /获取除了id以外的所有字段$arr=$m-where($data)-order(id asc)-limit(2,3)-field(username)-select();/只获取username字段$arr=$m-where($data)-order(id asc)-limit(2,3)-field(username,id)-select();/只获取username,id字段 table group having 补充连贯操作 alias 用于给当前数据表定义别名 字符串 page 用于查询分页(内部会转换成limit) 字符串和数字 join* 用于对查询的join支持 字符串和数组 union* 用于对查询的union支持 字符串、数组和对象 distinct 用于查询的distinct支持 布尔值 lock 用于数据库的锁机制 布尔值 cache 用于查询缓存 支持多个参数(以后在缓存部分再详细描述) relation 用于关联查询(需要关联模型扩展支持) 字符串 validate 用于数据自动验证 数组 auto 用于数据自动完成 数组 filter 用于数据过滤 字符串 scope* 用于命名范围 字符串、数组15. thinkphp 3.1.2 视图 模板的使用 规则模板文件夹下tpl/分组文件夹/模板主题文件夹/和模块名同名的文件夹index/和方法名同名的文件index.html(.tpl)更换模板文件的后缀名(修改配置文件conf/config.php)tmpl_template_suffix=.html,/更改模板文件后缀名 修改模板文件目录层次(修改配置文件conf/config.php)tmpl_file_depr=_,/修改模板文件目录层次 模板主题default_theme=your,/设置默认模板主题需要在tpl下面新建一个your文件夹作为模板主题文件夹如何动态修改模板主题?l 在后台准备一个功能,修改config.php文件中的默认模板项l 通过url传递 t=主题 参数可以修改不同的模板修改配置文件conf/config.php,添加如下项default_theme=your,/设置默认模板主题tmpl_detect_theme=true,/自动侦测模板主题theme_list=your,my,/支持的模板主题列表如要访问my主题则url后加上?t=my,如http:/localhost/thinkphp/index.php/user/index?t=my 输出模板内容 displayl display中没有参数$this-display();l 可以带参数$this-display(本模块文件夹下的其他模板文件);$this-display(index2);$this-display(其他文件夹下的模板文件);$this-display(public:error);/注意,仅仅需要在tpl下有public文件夹以及其中的error.html即可,不需要一定有public模块$this-display(其他主题下的 文件夹下的 模板文件);/需要开启主题支持$this-display(my:index:index);$this-display(一个url路径);$this-display(./public/error.html);/访问的是thinkphppublicerror.html$this-display(./public/error.html,utf-8,text/xml);$this-show($content); fetch方法获得模板文件中的内容,以字符串形式返回$content=$this-fetch(public:error); show方法不需要模板文件,可以直接输出模板内容$content=$this-fetch(public:error);dump($content);$content=str_replace(h1,i,$content);$this-show($content); 模板中的赋值 /$this-assign(name,赵桐正);$this-name=赵桐正2;$this-display(); 模板替换 _public_:会被替换成当前网站的公共目录 通常是 (项目目录/public/),如thinkphp/public/,可以用来调用外部的js,css等文件_root_: 会替换成当前网站的地址(不含域名) _app_: 会替换成当前项目的url地址 (不含域名)_group_:会替换成当前分组的url地址 (不含域名)_url_: 会替换成当前模块的url地址(不含域名)_action_:会替换成当前操作的url地址 (不含域名)_self_: 会替换成当前的页面url 更换模板变量规则,修改配置项tmpl_parse_string=array( /添加自己的模板变量规则_css_=_root_./public/css,_js_=_root_./public/js,), 16. thinkphp自带的验证码相关操作(详见thinkphp3.1.2完全开发手册chm2013-01-15.chm/19.杂项/19.8验证码) 将thinkphp的扩展包解压缩 将extend文件夹中所有项拷贝到thinkphppublicthinkphp extend中 在homelibaction中新建publicaction.class.php并打开填写代码如下?phpclass publicaction extends action public function verify()import(org.util.image);image:buildimageverify(); buildimageverify($length,$mode,$type,$width,$height,$verifyname) 的用法length验证码的长度,默认为4位数model验证字符串的类型,默认为数字,其他支持类型有0 字母 1 数字 2 大写字母 3 小写字母 4中文 5混合type验证码的图片类型,默认为png width验证码的宽度,默认会自动根据验证码长度自动计算height验证码的高度,默认为22verifyname验证码的session记录名称,默认为verify 通过加载图片 . 加上onclick=this.src=this.src+?+math.random()的目的是当点击生成的图片时,图片自动更改后面的+?+math.random()是为了让浏览器认为加载的是不同的图片,从而不从缓存中直接读取图片,已达到更换图片的效果. 后台中验证码验证 if($_sessionverify != md5($_postverify) $this-error(验证码错误!);17. thinkphp 3.1.2中自定义类的创建与加载 在publicthinkphpextendlibraryorgmy中新建test.class.php文件,内容如下 任何函数想引用test类,要在函数中添加import(org.my.test);,如public function index()import(org.my.test);$obj=new test;echo $obj-name;18. thinkphp 3.1.2 模板中的变量 变量输出 标量输出 数组输出$name1$namek2$name.k1 对象输出$name:k$name-k 系统变量用法含义例子$think.server获取$_server$think.server.php_self$think.get获取$_get$think.get.id$think.post获取$_post$t$think.request获取$_request$think.request.user_id$think.cookie获取$_cookie$think.cookie.username$think.session获取$_session$think.session.user_id$think.config获取系统配置参数$think.config.app_status$think.lang获取系统语言变量$think.lang.user_type$think.const获取系统常量$think.const.app_name或$think.app_name$think.env获取环境变量$think.env.hostname$think.version获取框架版本号$think.version$think.now获取当前时间$think.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论