ThinkPHP学习笔记.docx

上传人:b****6 文档编号:6451783 上传时间:2023-01-06 格式:DOCX 页数:36 大小:30.83KB
下载 相关 举报
ThinkPHP学习笔记.docx_第1页
第1页 / 共36页
ThinkPHP学习笔记.docx_第2页
第2页 / 共36页
ThinkPHP学习笔记.docx_第3页
第3页 / 共36页
ThinkPHP学习笔记.docx_第4页
第4页 / 共36页
ThinkPHP学习笔记.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

ThinkPHP学习笔记.docx

《ThinkPHP学习笔记.docx》由会员分享,可在线阅读,更多相关《ThinkPHP学习笔记.docx(36页珍藏版)》请在冰豆网上搜索。

ThinkPHP学习笔记.docx

ThinkPHP学习笔记

ThinkPHP框架

ThinkPHP框架1

Day013

一、如何学习框架:

3

2.ThinkPHP1

2.1配置tp框架1

A/安装好.下载源码包1

B/新建一个项目目录shop1

C/编写入口程序index.php1

2.2项目目录说明:

1

2.3url地址模式(4种):

1

2.4修改默认的控制器及方法名称:

2

2.5编写控制器:

2

2.51编写控制器规则:

2

例子:

声明控制器Test2

2.6Action的方法:

3

1)给模板传值3

2)显示模板3

3)跳转提示3

4)失败跳转3

练习:

4

2.7m层的编写:

4

1、链接数据库4

2、测试数据库连接是否成功。

4

3.数据模型类:

(会员注册)5

《例3.1.1userController》5

《3.1.2UserModel.class.php》5

3.1增加:

8

3.2查询:

8

3.2.1普通查询8

《例》9

3.2.2分组查询:

10

3.2.3链接查询:

10

Day0210

2.创建分组:

10

3.后台:

10

4.修改文章10

5.自动验证11

《例》自动验证12

6.自动填充:

12

《例》自动验证13

Day03==>V层:

13

1.Think标签13

1.1变量标签13

1.2循环标签13

1.3条件标签13

1.4变量调节器14

1.5模板引用标签14

1.6常量调用14

1.7预定义变量调用14

1.8模板替换标签,作用,用来产生url15

Day0415

ThinkPHP总结:

17

一、如何学习框架:

17

1、url地址规则:

(可能面试)17

2.1c层控制器规则:

17

2.2Action基类的方法:

18

2.3、M层规则:

18

2.4定义模型的语法格式18

2.5获得模型对象的方法18

2.6Model的方法:

18

2.6.1查询语句的语法格式19

select字段列表from表名19

表链接查询的语法格式19

2.6.2数据库操作写法例举:

20

2.6.3数据库操作写法例举:

20

3.1Think标签21

3.2变量调节器22

3.2页面重定向23

3.3success页面23

3.4ThinkPHP分页类的位置23

3.5ThinkPHP表单所有验证方式23

4.公共类:

24

4.1分页类24

4,2分页类步骤:

24

《例:

分页类》24

4.3文件(图片)上传类:

步骤25

《例:

多文件上传》26

4.4验证码26

《例:

验证码》27

Day01

框架:

项目的必要代码。

一、如何学习框架:

1、url地址规则

2、学习c层,控制器基类都提供哪些方法。

3、m,v层。

4、公共类

学习类的调用及类的封装,控制器类,数据模型类。

2.ThinkPHP国内程序员开发。

2.1配置tp框架

A/安装好.下载源码包。

Common---公共函数文件。

Conf---配置文件

Extend/Vendor----第三发代码

Extend/****----组件,基类

Lib----核心类程序

B/新建一个项目目录shop

C/编写入口程序index.php

define('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.3url地址模式(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/index

2.4修改默认的控制器及方法名称:

a.修改配置文件

conf/conf.php

'DEFAULT_MODULE'=>'Index',//默认模块名称

'DEFAULT_ACTION'=>'index',//默认操作名称

b.如果配置项的名称忘记:

去ThinkPHP/Conf/Convention.php中找。

2.5编写控制器:

2.51编写控制器规则:

1、控制器放在Lib/Action

2、命名XxxAction.class.php

3、类名和类文件名同名

4、方法名称小写

5、继承基类Action

例子:

声明控制器Test

classTestActionextendsAction{

functionfun1(){

echo"test-fun1";

}

}

2.6Action的方法:

1)给模板传值

assign("到模板上叫声明","把谁传过去");

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,并修改。

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、控制器Lib/Action/UserAction.class.php

2、方法register()

display();//Tpl/User/register.html

3、编写模板register.html

用户名:

密码:

重复密码:

手机:

姓名:

邮箱:

性别:

年龄:

创建会员表:

createtableuser(

idintkeyauto_increment,

usernamechar(20)uniquenotnull,

passwordchar(32)notnull,

telchar(13),

namerchar(10),

emailchar(50)unique,

sexenum('1','2')default'1',

agetinyint(3),

addtimeint,

statetinyint

(1)default0,

ipchar(20)

);

2.7m层的编写:

1、链接数据库

修改配置文件

'DB_HOST'=>'localhost',//服务器地址

'DB_NAME'=>'project',//数据库名

'DB_USER'=>'root',//用户名

'DB_PWD'=>'root',//密码

'DB_PREFIX'=>'',//表的前缀

2、测试数据库连接是否成功。

随便写一个控制器

在一个方法中,直接实例化Model,调用方法select()

$mOb=newModel('news');

$arr=$mOb->select();

var_dump($arr);

3.数据模型类:

(会员注册)

1、放在Lib/Model/UserModel.class.php

2、类名和类文件名同名

3、方法名没有要求,一般小驼峰。

4、继承Model

《例3.1.1userController》

php

classUserActionextendsAction{

functionregister(){

$this->display();

}

functionsave(){

//数据入库,数据模型类UserModel

$ob=newUserModel();

//$_POST['addtime']=time();

//$_POST['ip']=$_SERVER['REMOTE_ADDR'];

$re=$ob->addUser($_POST);

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》

php

classUserModelextendsModel{

protected$tableName="user";

protected$patchValidate=true;//全部验证

protected$_validate=array(

array('username','require','用户名不为空',0,'regex'),

//验证用户名的格式4-20位字符,第一位不为数字

array('username','/^[a-z]{1}[\w]{2,19}$/i','用户名格式错误',0,'regex'),

//验证用户名的唯一性

array('username','require','用户名已被使用',0,'regex'),

//密码6-20

array('password','4,20','密码格式错误',0,'length'),

//确认密码

array('repassword','password','密码不一致',1,'confirm'),

//手机验证

array('tel','/^1[358]\d{9}$/','邮箱格式错误',0,'regex'),

//邮箱验证

array('email','email','邮箱格式错误',0,'regex'),

array('email','','邮箱已被使用',0,'unique'),

//年龄验证

array('age','18,45','年龄格式错误',0,'between'),

);

//自动验证

protected$_auto=array(

array('password','md5',3,'function'),

array('addtime','time',1,'function'),

array('ip','getIp',1,'function'),

);

functionaddUser(){

$re=$this->create();

if($re){

return$this->add();

}else{

returnfalse;

}

}

}

《例3.1.3register.php》

会员注册:

用户名:

{$eArr.username}
密码:

{$eArr.password}
确认密码:

{$eArr.repassword}
姓名:

{$eArr.namer}
电话:

{$eArr.tel}
邮箱:

{$eArr.email}
性别:

 
年龄:

{$eArr.age}
验证码

functionchange(){

document.getelementById("verify").src="__APP__/Verify/verify"+Math.random();

}

3.1增加:

Model->create()

Model->data($_POST);//产生数据

Model->add();

Model->data($_POST)->add();

3.2查询:

3.2.1普通查询

table("表名")//指定表名

where("条件字符串")//指定查询条件

order("子句内容")//排序

limit("子句的内容")//拿多条记录

field("字段列表")//指定字段列表

alias("表名")//指定别名

join("basb1on....")//链接查询

group("字段名称")//分组查询

hving("条件")//筛选

select()

find()

《例》

//获取列表数据

functiongetProductBylist($field,$where,$limit,$order){

$arr=$this->field($field)

->where($where)

->order($order)

->limit($limit)

->select();

//遍历数组$arr

foreach($arras$k=>$v){

$pid=$v['id'];

//根据产品id,获取图片

$imageob=D("Productimage");

$imageArr=$imageob->getImageByPid($pid);

//var_dump($imageArr);

if(isset($imageArr['imagename'])){

$imagename=$imageArr['imagename'];

}else{

$imagename="no.jpg";

}

$arr[$k]['imagename']=$imagename;

}

return$arr;

}

//获取总记录条数

functiongetProductCount($where){

return$this->where($where)->count();

}

//产品的删除操作

functiondeleteProductById($id){

return$this->where("id=$id")->delete();

}

//根据id获取记录

functiongetProductById($id){

return$this->where("id=$id")->find();

}

//产品的修改操作

functionupdateProductById($arr,$id){

return$this->where("id=$id")->data($arr)->save();

}

3.2.2分组查询:

查询出每个分类下有多少条记录。

selectcount(*)asnumfromnewsgroupbytype

$mOb->group("type")->field("count(*)asnum,type")->select();

查询出都哪个分类下记录的条数超过了50

$mOb->group("type")->field("count(*)asnum,type")->having('num>50')->select();

3.2.3链接查询:

查询产品记录,带有分类名称。

selectp.id,p.title,t.tnamefromproductaspjointypeastonp.tid=t.id

Day02

2.创建分组:

修改配置文件

APP_GROUP_LIST=>'Home,Admin'

DEFAULT_GROUP=>'Home'

对控制器及模板的分组,Lib/Action/创建和分组对应的文件夹。

Tpl/创建和分组对应的文件夹。

3.后台:

登录页面控制器,Admin

|

后台首页(框架集)控制器,Admin

文章模块控制器,NewsActionAdmin

4.修改文章

|

|传递id值

修改表单页面NewsActionupdate显示修改模板

||

BaseActiondisplay()assign()

|

NewsModel->getNewsById()

|

|

提交

|

|

NewsAction->usave()保存修改

|

|

NewsModel->updateNewsById()

|

|

提示跳转

5.自动验证

1、数据模型类中

作用:

写表前用于对数据的合法性进行验证

protected$_validate=array(

array('被验证的字段','验证的规则','错误提示',"0|1|2",'附加规则','验证的时机'),//指定的验证规则

);

0|1|2验证条件

0---字段存在则验证

1---必须验证

2---内容非空则验证

验证时机:

1-----insertadd

2-----updatesave

3-----both

附加规则验证规则

regex"/正则表达式/"

confirm"字段名称":

确认2个字段的值是否相同

betweenarray(min,max)min,max:

是否在此范围之中

inarray(v1,v2,v3,....)

lengthmin,maxarray(min,max)

unique''

例子:

给注册的表单加上合法性验证。

Lib/Model/UserModel.class.php

《例》自动验证

protected$_validate=array(

array('username','require','用户名不为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1