ThinkPHP学习笔记.docx
《ThinkPHP学习笔记.docx》由会员分享,可在线阅读,更多相关《ThinkPHP学习笔记.docx(36页珍藏版)》请在冰豆网上搜索。
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} |
验证码 | | |
|