1、ThinkPHP学习笔记 ThinkPHP框架ThinkPHP框架 1Day01 3一、如何学习框架: 32.ThinkPHP 12.1配置tp框架 1A/安装好.下载源码包 1B/新建一个项目目录shop 1C/编写入口程序 index.php 12.2项目目录说明: 12.3 url地址模式(4种): 12.4修改默认的控制器及方法名称: 22.5编写控制器: 22.51编写控制器规则: 2例子:声明控制器Test 22.6Action的方法: 31)给模板传值 32)显示模板 33)跳转提示 34)失败跳转 3练习: 42.7 m层的编写: 41、链接数据库 42、测试数据库连接是否成功
2、。 43.数据模型类:(会员注册) 5例3.1.1userController 53.1.2UserModel.class.php 53.1增加: 83.2查询: 83.2.1普通查询 8例 93.2.2分组查询: 103.2.3链接查询: 10Day02 102.创建分组: 103.后台: 104.修改文章 105.自动验证 11例自动验证 126.自动填充: 12例自动验证 13Day03 =V层: 131.Think标签 131.1变量标签 131.2循环标签 131.3条件标签 131.4变量调节器 141.5模板引用标签 141.6常量调用 141.7预定义变量调用 141.8模板替
3、换标签,作用,用来产生url 15Day04 15ThinkPHP总结: 17一、如何学习框架: 171、url地址规则:(可能面试) 172.1 c层 控制器规则: 172.2 Action基类的方法: 182.3、M层规则: 182.4定义模型的语法格式 182.5获得模型对象的方法 182.6 Model的方法: 182.6.1查询语句的语法格式 19select 字段列表 from 表名 19表链接查询的语法格式 192.6.2数据库操作写法例举: 202.6.3数据库操作写法例举: 203.1Think标签 213.2变量调节器 223.2页面重定向 233.3 success页面
4、233.4 ThinkPHP分页类的位置 233.5ThinkPHP表单所有验证方式 234.公共类: 244.1分页类 244,2分页类步骤: 24例:分页类 244.3文件(图片)上传类:步骤 25例:多文件上传 264.4验证码 26例:验证码 27 Day01框架:项目的必要代码。一、如何学习框架: 1、url地址规则 2、学习c层,控制器基类都提供哪些方法。 3、m,v层。 4、公共类学习类的调用及类的封装,控制器类,数据模型类。2.ThinkPHP国内程序员开发。2.1配置tp框架A/安装好.下载源码包。Common-公共函数文件。Conf-配置文件Extend/Vendor-第三
5、发代码Extend/* - 组件,基类Lib-核心类程序B/新建一个项目目录shopC/编写入口程序 index.phpdefine(APP_DEBUG,true);/开启调试模式/定义项目名称define(APP_NAME, shop);/定义项目路径define(APP_PATH, ./shop/);/加载框架入文件require ./ThinkPHP/ThinkPHP.php;2.2项目目录说明:Lib/Action-控制器类,自己编写Lib/Model-数据模型类Tpl - 模板Common - common.php 自定义的函数Runtime - 临时文件Conf - 配置文件2.3
6、 url地址模式(4种): 1)、普通模式 xxx/index.php?m=控制器名&a=方法名&. 2)、PATHINFO模式(常用模式) xxx/index.php/控制器名/方法名/id/5. 3)、兼容模式 xxx/index.php?s=控制名/方法名/. 4)、REWRITE模式,url地址进行美化。 xxx/index.php/Index/index/id/5 xxx/index-index-5.html说明:如果url没有指定控制器及方法,默认请求Index/index2.4修改默认的控制器及方法名称:a.修改配置文件conf/conf.phpDEFAULT_MODULE =
7、Index, / 默认模块名称DEFAULT_ACTION = index, / 默认操作名称b.如果配置项的名称忘记:去ThinkPHP/Conf/Convention.php中找。2.5编写控制器:2.51编写控制器规则: 1、控制器放在Lib/Action 2、命名XxxAction.class.php 3、类名和类文件名同名 4、方法名称小写 5、继承基类Action 例子:声明控制器Testclass TestAction extends Action function fun1() echo test-fun1; 2.6Action的方法: 1)给模板传值 assign(到模板上叫
8、声明,把谁传过去); 2)显示模板 display(控制器/方法名) display(模板名) display(模板路径./项目/Tpl/控制器/方法.html); 默认模板,和控制器方法同名, 并且放在Tpl/控制器/方法名.html 3)跳转提示 success(提示语,url地址,等待时间); 函数:U(控制器/方法,array(id=5) a、success方法调用的哪个模板 ThinkPHP/Tpl/dispatch_jump.tpl b、修改配置文件,加一项 TMPL_ACTION_SUCCESS = Public/success, c、新建模板success.html,并修改。
9、4)失败跳转 error(提示语,url地址,等待时间) a、success方法调用的哪个模板 ThinkPHP/Tpl/dispatch_jump.tpl b、修改配置文件,加一项 TMPL_ACTION_ERROR = Public/error, c、新建模板error.html,并修改。 redirect(目标地址,array(),时间,提示语),类似于header 第二个参数,其他传值 例子: index.php/Test/fun2/id/5.html redirect(Test/fun2,array(id=5),5,跳转中.);练习:写一个注册页面,当点击注册按钮,请求数据处理方法1
10、、控制器 Lib/Action/UserAction.class.php2、方法register() display();/Tpl/User/register.html3、编写模板register.html用户名:密码:重复密码:手机:姓名:邮箱:性别:年龄:创建会员表:create table user( id int key auto_increment, username char(20) unique not null, password char(32) not null, tel char(13), namer char(10), email char(50) unique, se
11、x enum(1,2) default 1, age tinyint(3), addtime int, state tinyint(1) default 0, ip char(20);2.7 m层的编写: 1、链接数据库 修改配置文件 DB_HOST = localhost, / 服务器地址 DB_NAME = project, / 数据库名 DB_USER = root, / 用户名 DB_PWD = root, / 密码 DB_PREFIX = , /表的前缀 2、测试数据库连接是否成功。 随便写一个控制器 在一个方法中,直接实例化Model,调用方法select() $mOb=new M
12、odel(news); $arr=$mOb-select(); var_dump($arr);3.数据模型类:(会员注册) 1、放在Lib/Model/UserModel.class.php 2、类名和类文件名同名 3、方法名没有要求,一般小驼峰。 4、继承Model 例3.1.1userControllerdisplay(); function save() /数据入库,数据模型类UserModel $ob=new UserModel(); /$_POSTaddtime=time(); /$_POSTip=$_SERVERREMOTE_ADDR; $re=$ob-addUser($_POST
13、); if($re) /提示并跳转 $this-success(注册成功,U(User/register),3); else $errorInfo=$ob-getError(); $this-assign(eArr,$errorInfo); $this-assign(infoArr,$_POST); $this-display(User/register); /$this-error($errorInfo,U(User/register),3); 3.1.2UserModel.class.php create(); if($re) return $this-add(); else return
14、 false; 例3.1.3register.php 会员注册: 用户名: $eArr.username 密码: $eArr.password 确认密码: $eArr.repassword 姓名: $eArr.namer 电话: $eArr.tel 邮箱: $eArr.email 性别: 男 女 年龄: $eArr.age 验证码 function change() document.getelementById(verify).src=_APP_/Verify/verify+Math.random(); 3.1增加: Model-create() Model-data($_PO
15、ST);/产生数据 Model-add(); Model-data($_POST)-add(); 3.2查询:3.2.1普通查询 table(表名)/指定表名 where(条件字符串)/指定查询条件 order(子句内容)/排序 limit(子句的内容)/拿多条记录 field(字段列表) /指定字段列表 alias(表名) /指定别名 join(b as b1 on .)/链接查询 group(字段名称)/分组查询 hving(条件)/筛选 select() find()例/获取列表数据 function getProductBylist($field,$where,$limit,$orde
16、r) $arr=$this-field($field) -where($where) -order($order) -limit($limit) -select(); /遍历数组$arr foreach ($arr as $k=$v) $pid=$vid; /根据产品id,获取图片 $imageob=D(Productimage); $imageArr=$imageob-getImageByPid($pid); /var_dump($imageArr); if(isset($imageArrimagename) $imagename=$imageArrimagename; else $imag
17、ename=no.jpg; $arr$kimagename=$imagename; return $arr; /获取总记录条数 function getProductCount($where) return $this-where($where)-count(); /产品的删除操作 function deleteProductById($id) return $this-where(id=$id)-delete(); /根据id获取记录 function getProductById($id) return $this-where(id=$id)-find(); /产品的修改操作 functi
18、on updateProductById($arr,$id) return $this-where(id=$id)-data($arr)-save(); 3.2.2分组查询: 查询出每个分类下有多少条记录。 select count(*) as num from news group by type $mOb-group(type)-field(count(*) as num,type)-select(); 查询出都哪个分类下记录的条数超过了50 $mOb-group(type)-field(count(*) as num,type)-having(num50)-select(); 3.2.3
19、链接查询: 查询产品记录,带有分类名称。 select p.id,p.title,t.tname from product as p join type as t on p.tid=t.id Day022.创建分组: 修改配置文件 APP_GROUP_LIST =Home,Admin DEFAULT_GROUP =Home 对控制器及模板的分组,Lib/Action/创建和分组对应的文件夹。 Tpl/创建和分组对应的文件夹。3.后台: 登录页面 控制器,Admin | 后台首页(框架集)控制器,Admin 文章模块 控制器,NewsAction Admin 4.修改文章 | |传递id值 修改
20、表单页面NewsAction update显示修改模板 | | BaseAction display() assign() | NewsModel-getNewsById() | | 提交 | | NewsAction-usave()保存修改 | | NewsModel-updateNewsById() | | 提示跳转5.自动验证 1、数据模型类中作用:写表前用于对数据的合法性进行验证 protected $_validate=array( array(被验证的字段,验证的规则,错误提示,0|1|2,附加规则,验证的时机),/指定的验证规则 ); 0|1|2 验证条件 0-字段存在则验证 1
21、-必须验证 2-内容非空则验证 验证时机: 1-insert add 2-update save 3-both 附加规则 验证规则 regex /正则表达式/ confirm 字段名称:确认2个字段的值是否相同 between array(min,max) min,max:是否在此范围之中 in array(v1,v2,v3,.) length min,max array(min,max) unique 例子: 给注册的表单加上合法性验证。 Lib/Model/UserModel.class.php例自动验证protected $_validate=array( array(username,require,用户名不为
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1