《thinkphp学习笔记.doc》由会员分享,可在线阅读,更多相关《thinkphp学习笔记.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流thinkphp学习笔记.精品文档.-ONE-一、ThinkPHP的介绍 /了解MVCM - Model 模型 工作:负责数据的操作V - View 视图(模板) 工作:负责前台页面显示C - Controller 控制器(模块) 工作:描述功能框架二、ThinkPHP的获取 /了解三、ThinkPHP核心文件介绍 /了解ThinkPHP.php 框架入口文件Common 框架公共文件Conf 框架配置文件Extend 框架扩展目录Lang 核心语言包目录Lib 核心类库目录 Behavior 核心行为类库 Core 核心基类库 Driver
2、 内置驱动 Cache 内置缓存驱动 Db 内置数据库驱动 TagLib 内置标签驱动 Template 内置模板引擎驱动 Template 内置模板引擎Tpl 系统模板目录四、实验环境搭建 /了解五、项目搭建 /重点#项目目录结构及说明:Home 前台应用文件夹Common 项目公共文件目录Conf 项目配置目录Lang 项目语言目录Lib 项目类库目录 Action Action类库目录 Behavior 行为类库目录 Model 模型类库目录 Widget Widget类库目录Runtime 项目运行时目录 Cache 模板缓存目录 Data 数据缓存目录 Logs 日志文件目录 Tem
3、p 临时缓存目录Tpl 项目模板目录-TWO-一、什么是MVC /了解M -Model 编写model类 对数据进行操作V -View 编写html文件,页面呈现C -Controller 编写类文件(UserAction.class.php)二、ThinkPHP的MVC特点 /了解三、ThinkPHP的MVC对应的目录 /了解M 项目目录/应用目录/Lib/ModelV 项目目录/应用目录/TplC 项目目录/应用目录/Lib/Action四、url访问C /了解五、url的4种访问方式 /重点!1.PATHINFO 模式 - 重点!http:/域名/项目名/入口文件/模块名/方法名/键1/
4、值1/键2/值22.普通模式http:/域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值23.REWRITE模式http:/域名/项目名/模块名/方法名/键1/值1/键2/值24.兼容模式http:/域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2-THREE-一、ThinkPHP 3 的输出 (重点)a、通过 echo 等PHP原生的输出方式在页面中输出b、通过display方法输出想分配变量可以使用assign方法c、修改左右定界符休要修改配置文件中的配置项TMPL_L_DELIM=, /修改右定界符二、ThinkPHP 3 的模型使用 (重点)需要在
5、方法中通过new Model(表名)的形式操作数据库$m=new Model(User);$arr=$m-select(); DB_TYPE=mysql, /设置数据库类型DB_HOST=localhost,/设置主机DB_NAME=thinkphp,/设置数据库名DB_USER=root, /设置用户名DB_PWD=, /设置密码DB_PORT=3306, /设置端口号DB_PREFIX=tp_, /设置表前缀-FOUR-一、ThinkPHP 3 的输出 (重点)a、通过 echo 等PHP原生的输出方式在页面中输出b、通过display方法输出想分配变量可以使用assign方法c、修改左右
6、定界符休要修改配置文件中的配置项TMPL_L_DELIM=, /修改右定界符二、ThinkPHP 3 的模型使用 (重点)需要在方法中通过new Model(表名)的形式操作数据库$m=new Model(User);$arr=$m-select(); DB_TYPE=mysql, /设置数据库类型DB_HOST=localhost,/设置主机DB_NAME=thinkphp,/设置数据库名DB_USER=root, /设置用户名DB_PWD=, /设置密码DB_PORT=3306, /设置端口号DB_PREFIX=tp_, /设置表前缀也可以使用DSN方法进行配置DB_DSN=mysql:/
7、root:localhost:3306/thinkphp,/使用DSN方式配置数据库信息如果两种方式同时存在,以DSN方式为优先还有一种简单实用模型的方式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()三、补充 (了解)a、模板可以遍历数组-b、我们可以开启调试功能中的page_trace1.开
8、启调试功能/3.开启调试模式define(APP_DEBUG,true);2.我们需要设置配置文件,开启页面traceSHOW_PAGE_TRACE=true,/开启页面Trace-FIVE-一、ThinkPHP 3 的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(userna
9、me);三、ThinkPHP 3 创建数据 (重点)对数据的添加 Create$m=new Model(User);$m=M(User);$m-字段名=值$m-add();返回值是新增的id号四、ThinkPHP 3 删除数据 (重点)$m=M(User);$m-delete(2); /删除id为2的数据$m-where(id=2)-delete(); /与上面效果相同,也是删除id为2的数据返回值是受影响行数五、ThinkPHP 3 更新数据 (重点)$m=M(User);$dataid=1;$datausername=ztz2;$m-save($data); 返回值是受影响行数-SIX-一
10、、普通查询方式a、字符串$arr=$m-where(sex=0 and username=gege)-find();b、数组$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小于等于LIKE 模糊查
11、询$datausername=array(like,%ge);$arr=$m-where($data)-select();NOTLIKE$datausername=array(notlike,%ge%); /notlike中间没有空格 $arr=$m-where($data)-select();注意:如果一个字段要匹配多个通配符$datausername=array(like,array(%ge%,%2%,%五%),and);/如果没有第三个值,默认关系是or关系$arr=$m-where($data)-select();BETWEEN$dataid=array(between,array(5
12、,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=arra
13、y(not in,array(4,6,7);$arr=$m-where($data)-select();/SELECT * FROM tp_user WHERE ( id NOT IN (4,6,7) )-SEVEN-一、普通查询方式a、字符串$arr=$m-where(sex=0 and username=gege)-find();b、数组$datasex=0;$datausername=gege;$arr=$m-where($data)-find();注意:这种方式默认是and的关系,如果使用or关系,需要添加数组值$datasex=0;$datausername=gege;$data_l
14、ogic=or;二、表达式查询方式$dataid=array(lt,6);$arr=$m-where($data)-select();EQ 等于NEQ不等于GT 大于EGT大于等于LT 小于ELT小于等于LIKE 模糊查询$datausername=array(like,%ge);$arr=$m-where($data)-select();NOTLIKE$datausername=array(notlike,%ge%); /notlike中间没有空格 $arr=$m-where($data)-select();注意:如果一个字段要匹配多个通配符$datausername=array(like,
15、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=
16、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
17、( (id 4) AND (id query(select * from t_user where id 50);var_dump($result);b、execute 用于更新个写入操作成功返回影响行数失败返回boolean false$m=M();$result=$m-execute(insert into t_user(username) values(ztz3);var_dump($result);-EIGHT-一、常用连贯操作1.where帮助我们设置查询条件2.order对结果进行排序$arr=$m-order(id desc)-select();$arr=$m-order(arr
18、ay(id=desc,sex=asc)-select();3.limit限制结果limit(2,5)limit(2,5)limit(10)/limit(0,10)4.field设置查询字段field(username as name,id)field(array(username=name,id)field(id,true) /获取除了id以外的所有字段5.table6.group7.having二、补充 alias 用于给当前数据表定义别名 字符串 page 用于查询分页(内部会转换成limit) 字符串和数字 join* 用于对查询的join支持 字符串和数组 union* 用于对查询的u
19、nion支持 字符串、数组和对象 distinct 用于查询的distinct支持 布尔值 lock 用于数据库的锁机制 布尔值 cache 用于查询缓存 支持多个参数(以后在缓存部分再详细描述) relation 用于关联查询(需要关联模型扩展支持) 字符串 validate 用于数据自动验证 数组 auto 用于数据自动完成 数组 filter 用于数据过滤 字符串 scope* 用于命名范围 字符串、数组 -NINE-一、模板的使用 (重点)a、规则模板文件夹下TPL/分组文件夹/模板主题文件夹/和模块名同名的文件夹Index/和方法名同名的文件index.html(.tpl)更换模板文
20、件的后缀名(修改配置文件)TMPL_TEMPLATE_SUFFIX=.html,/更改模板文件后缀名b、修改模板文件目录层次TMPL_FILE_DEPR=_,/修改模板文件目录层次c、模板主题DEFAULT_THEME=your,/设置默认模板主题需要在TPL下面新建一个your文件夹作为模板主题文件夹如何动态修改模板主题?1、在后台准备一个功能,修改config.php文件中的默认模板项2、通过url传递 t=主题 参数可以修改不同的模板DEFAULT_THEME=your,/设置默认模板主题TMPL_DETECT_THEME=true,/自动侦测模板主题THEME_LIST=your,my
21、,/支持的模板主题列表二、输出模板内容 (重点)a、display1.display中没有参数$this-display();2.可以带参数$this-display(本模块文件夹下的其他模板文件); $this-display(index2); $this-display(其他文件夹下的模板文件);$this-display(Public:error);/注意,仅仅需要在Tpl下有Public文件夹以及其中的error.html即可,不需要一定有Public模块$this-display(其他主题下的 文件夹下的 模板文件);/需要开启主题支持$this-display(my:Index:i
22、ndex); $this-display(一个url路径);$this-display(./Public/error.html); $this-display(./Public/error.html,utf-8,text/xml); $this-show($content);3.fetch方法获得模板文件中的内容,以字符串形式返回$content=$this-fetch(Public:error);4.show方法不需要模板文件,可以直接输出模板内容$content=$this-fetch(Public:error);dump($content);$content=str_replace(h1
23、,i,$content);$this-show($content);三、模板中的赋值 (重点)/$this-assign(name,赵桐正);$this-name=赵桐正2;$this-display();四、模板替换 (重点)_PUBLIC_:会被替换成当前网站的公共目录 通常是 /Public/_ROOT_: 会替换成当前网站的地址(不含域名) _APP_: 会替换成当前项目的URL地址 (不含域名)_GROUP_:会替换成当前分组的URL地址 (不含域名)_URL_: 会替换成当前模块的URL地址(不含域名)_ACTION_:会替换成当前操作的URL地址 (不含域名)_SELF_: 会替换成当前的页面URL更换模板变量规则,修改配置项TMPL_PARSE_STRING=array( /添加自己的模板变量规则_CSS_=_ROOT_./Public/Css,_JS_=_ROOT_./Public/Js,-TEN-一、变量输出 (重点)1.标量输出2.数组输出$name1$namek2$name.k13.对象输出$name:k$name-k二、系统变量$Think.get.id三、使用函数$name|strtoupper 生成的编译后文件是 $name|date=Y m d H:i:s,#四、默认值$name|default=这里是默认值五、运算符$name+
限制150内