thinkphp教程笔记总结.docx

上传人:b****2 文档编号:17184307 上传时间:2023-04-24 格式:DOCX 页数:17 大小:22.11KB
下载 相关 举报
thinkphp教程笔记总结.docx_第1页
第1页 / 共17页
thinkphp教程笔记总结.docx_第2页
第2页 / 共17页
thinkphp教程笔记总结.docx_第3页
第3页 / 共17页
thinkphp教程笔记总结.docx_第4页
第4页 / 共17页
thinkphp教程笔记总结.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

thinkphp教程笔记总结.docx

《thinkphp教程笔记总结.docx》由会员分享,可在线阅读,更多相关《thinkphp教程笔记总结.docx(17页珍藏版)》请在冰豆网上搜索。

thinkphp教程笔记总结.docx

thinkphp教程笔记总结

1、url的四种访问模式:

1)PATHINFO模式(重点)

Eg:

http:

//域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2

2)普通模式

Eg:

http:

//域名/项目名/入口文件?

m=模块名&a=方法名&键1=值1&键2=值2

3)REWRITE模式(重写模式)

需要增加配置文件hac,服务器支持。

Eg:

http:

//域名/项目名/模块名/方法名/键1/值1/键2/值2

4)兼容模式

Eg:

http:

//域名/项目名/入口文件?

s=模块名/方法名/键1/值1/键2/值2

 

2、ThinkPHP输出:

1)PHP原生输出方法。

Echo

2)通过display方法输出。

想通过分配变量可以使用assign输出

3)修改定界符:

修改配置项。

避免与JQuery冲突

‘THPL_L_DELIM’-〉‘<{’修改左定界符

‘THPL_R_DELIM’-〉‘<{’修改右定界符

 

3、ThinkPHP的模型使用

1)需要在方法中通过newModel(表名)的形式操作数据库

$m=newModel(‘User’);

$arr=$m->sselect();

需要通过配置项来配置数据库(数据表名第一个字母大写)

还有一种简单使用模型的方法:

$m=M(‘User’);//等效为newModel

$arr=$m->sselect();

使用模型的实力可以对数据进行操作,操作的工作一般就是对数据库进行增删改查。

增ccreate$m->add()

删ddelete$m->delete()

改uupdate$m->save()

查rread$m->select()

4、ThinkPHP3.1.2CURD特性

ThinkPHP3读取数据

1)对数据的读取Read

$m=newModel('User');

$m=M('User');

a.select$m->select();//获取所有数据以数组形式返回

b.find$m->find($id);//获取单条数据

c.getField(字段名)//获取一个具体的字段值

$arr=$m->where('id=2')->getField('username');//ThinkPHP的连贯操作

ThinkPHP3创建数据

对数据的添加Create

$m=newModel('User');

$m=M('User');

$m->字段名=值

$m->add();

返回值是新增的id号

代码示例:

publicfunctionadd(){

$m=newModel('User');

$m->username=$_POST['username'];

$m->sex=$_POST['sex'];

$newId=$m->add();

if($newId>0){

$this->success("Addnewusersuccessfully!

!

!

",index);

}else{

$this->error("Addnewuserfailed!

!

!

",index);}

}

ThinkPHP3删除数据

$m=M('User');

$m->delete

(2);//删除id为2的数据

$m->where('id=2')->delete();//与上面效果相同也是删除id为2的数据

返回值是受影响行数

ThinkPHP3更新数据

$m=M('User');

$data['id']=1;

$data['username']='ztz2';

$m->save($data);

返回值是受影响行

5、ThinkPHP3.1.2查询方式

find只能查询一天记录,select可以查询多条记录

一、普通查询方式

字符串

$arr=$m->where("sex=0andusername='gege'")->find();

 

数组

$data['sex']=0;

$data['username']='gege';

$arr=$m->where($data)->find();

注意这种方式默认是and的关系如果使用or关系需要添加数组值$data['sex']=0;

$data['username']='gege';

$data['_logic']='or';

二、表达式查询方式

$data['id']=array('lt',6);

$arr=$m->where($data)->select();

EQ等于

NEQ不等于

GT大于

EGT大于等于

LT小于

ELT小于等于

示例代码:

publicfunctionshow(){

$m=newModel('User');

$data['id']=array("LT",25);

$arr=$m->where($data)->select();

var_dump($arr);

$this->display();}

LIKE模糊查询

$data['username']=array('like','%ge');//查询username以ge结尾的user$data['username']=array('like','%ge%');//查询username包含ge的user$arr=$m->where($data)->select();

NOTLIKE//注意not和like中间不能有空格

$data['username']=array('notlike','%ge%');//查询username不包含ge的user$arr=$m->where($data)->select();

注意如果一个字段要匹配多个通配符$data['username']=array('like',array('%ge%','%2%','%五%'),'and');//如果没有第三个值默认关系是or关系

$arr=$m->where($data)->select();

BETWEEN

$data['id']=array('between',array(5,7));

$arr=$m->where($data)->select();

//SELECT*FROM`tp_user`WHERE((`id`BETWEEN5AND7))

$data['id']=array('notbetween',array(5,7));

//注意not和between中间一定要有空格

$arr=$m->where($data)->select();

IN

$data['id']=array('in',array(4,6,7));

$arr=$m->where($data)->select();

//SELECT*FROM`tp_user`WHERE(`id`IN(4,6,7))$data['id']=array('notin',array(4,6,7));not和in之间一定要有空格

$arr=$m->where($data)->select();

//SELECT*FROM`tp_user`WHERE(`id`NOTIN(4,6,7))

 

常用连贯操作

a)where帮助我们设置查询条件

b)order对结果进行排序

$arr=$m->order('iddesc')->select();

$arr=$m->order(array('id'=>'desc','sex'=>'asc'))->select();

c)limit限制结果

limit(2,5)

limit('2,5')

limit(10)//limit(0,10)d)field

d)设置查询字段

field('usernameasname,id')

field(array('username'=>'name','id')

field('id',true)//获取除了id以外的所有字段

e)table

f)group

g)Having

h)补充

i.alias用于给当前数据表定义别名字符串

ii.page用于查询分页内部会转换成limit字符串和数字

iii.join*用于对查询的join支持字符串和数组

iv.union*用于对查询的union支持字符串、数组和对象

v.distinct用于查询的distinct支持布尔值

vi.lock用于数据库的锁机制布尔值

vii.cache用于查询缓存支持多个参数以后在缓存部分再详细描述

viii.relation用于关联查询需要关联模型扩展支持字符串

ix.validate用于数据自动验证数组

x.auto用于数据自动完成数组

xi.filter用于数据过滤字符串

xii.scope*用于命名范围字符串、数组

 

模板的使用

a)规则

模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html.tpl

更换模板文件的后缀名

修改配置文件:

'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',//支持的模板主题列表

模板的输出

a)display

1.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:

index');

$this->display(一个url路径);

$this->display('./Public/error.html');

$this->display('./Public/error.html','utf-8','text/xml');//参数二为制定编码,

参数三为模版的输出类型。

$this->show($content);//参数也可以为:

‘html代码’

3.fetch方法获得模板文件中的内容以字符串形式返回$content=$this->fetch('Public:

error');

4.show方法不需要模板文件可以直接输出模板内容

$content=$this->fetch('Public:

error');

dump($content);

$content=str_replace('h1','i',$content);

$this->show($content);

模版赋值

1、$this->assign(data,梁辉健);

2、$this->name=”梁辉健”;

模版替换

a)__PUBLIC__会被替换成当前网站的公共目录通常是/Public/

b)__ROOT__会替换成当前网站的地址不含域名

c)__APP__会替换成当前项目的URL地址不含域名

d)__GROUP__会替换成当前分组的URL地址不含域名

e)__URL__会替换成当前模块的URL地址不含域名

f)__ACTION__会替换成当前操作的URL地址不含域名

变量输出

1、标量输出

2、数组输出

{$name[1]}

{$name[‘k2’]}/{4name.k1}:

关联数组

3、对象输出

{$name:

k}/{$name->k}“name”为对象,”k”为类里面调用的函数。

系统变量:

使用函数:

{$name|strtoupper}编译后

phpecho(strtoupper($name));?

>

{$name|date='y/m/dH:

i:

s',###}编译后

phpecho(date('y/m/dH:

i:

s',$name));?

>

$this->assign('name');:

若是没有给name分配变量则可以在模版文件设置:

{$name|default="这里是默认值"}

编译后

phpecho(($name)?

($name):

"这里是默认值");?

>

运算符:

+-*/++--:

{$name+1}

导入jscss文件

方法一:

方法二:

若是Js/Css文件不是放在Public文件目录下,可以增加一个路径参数

方法三:

(可自动检测文件属性)

分支结构

1、If结构

未成年

青春年少

成年

<:

gt

>:

lt

==:

eq

<=:

elt

>=:

egt

!

=:

neq

===:

heq

!

==:

nheq

2、switch结构

一个和尚挑水吃

两个和尚抬水吃

三个和尚没水吃

这里是默认值

 

循环结构

1、for

{$j}aaa/

注:

开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。

comparison的默认值是lt;;name的默认值是i,步进值的默认值是1

2、Volist(遍历数组--多位,数值数组)

{$v.username}

3、Foreach(遍历数组,一维)

{$k}---------{$v}

特殊标签

1、比较标签

eq或者equal

等于

neq或者notequal

不等于

gt

大于

egt

大于等于

lt

小于

elt

小于等于

heq

恒等于

nheq

不恒等于

 

例:

输出10输出不是十

2、范围标签

In:

(notin)

在里面不在里面

Between:

(notbetween)

在里面不在里面

也可以直接使用range标签,替换in和notin的用法:

输出内容1

其中type属性的值可以用in或者notin。

3、Present(notpresnt):

可以使用present标签来判断模板变量是否已经赋值

name已经赋值

4、Empty(notempty):

可以使用empty标签判断模板变量是否为空

name为空值

5、Defined:

判断常量是否已经定义

6、Define:

可以使用define标签进行常量定义

7、Assign:

模版中变量赋值

其他标签的使用

1、在模版中直接使用PHP代码(不建议使用)

echo"我是梁辉健"

2、修改定界符

{$name}=><{$name}>避免与js冲突

一、模版的包含

格式:

header"/>

User:

read"/>

在模版中变量[$变量名]接收

2、模版渲染

1、自动开启模版渲染,设置配置文件

‘{__NOLAYOUT__}’=>’true’,//开启模版渲染模式

准备一个模版渲染页面,在页面使用{__CONTENT__}接收具体页面的内容

如果在某个具体模版中不希望使用喧嚷模版,可以在页首添加{__NOLAYOUT__}

2、不开启自动模版渲染可以在每一个具体页面的页首添加

3、使用技巧

在渲染模版文件中

header"/>

{__CONTENT__}

footer"/>

3、模版的继承

网站标题

block标签必须指定name属性来标识当前区块的名称,这个标识在当前模板中应该是唯一的,block标签中可以包含任何模板内容,包括其他标签和变量,例如:

{$web_title}

你甚至还可以在区块中加载外部文件:

header"/>

需要在子模版里面加入代码:

1、空模块和空操作

1、空操作

publicfunction_empty($name){

$this->show('$name不存在返回首页');

}

2、空模块

classEmptyActionextendsAction{

publicfunctionindex(){

$name=MODEL_NAME;

$this->display('City:

$name');

$this->show('

该方法不存在

');

}

}

2、前置操作和后置操作

1、前置操作:

__before__操作名

2、后置操作:

__after__操作名

1、URL规则

1、默认是区分大小写的

2、如果不想区分大小写可以改配置文件

'URL_CASE_INSENSITIVE'=>'true',//URL不区分大小写

3、如果模块名为UserGroupAction,那么url找模块就必须写成

http:

//localhost/ThinkPHP4/index.php/user_group/index

4、如果'URL_CASE_INSENSITIVE'=>'false',那么url也可以写成

http:

//localhost/ThinkPHP4/index.php/UserGroup/index

2、伪静态

'URL_HTML_SUFFIX'=>'shtml|html|xml'//限制伪静态的后缀

3、URL路由

1、启动路由

要在配置文件中开启路由支持

2、使用路由

'URL_ROUTER_ON'=>'true',

'URL_ROUTE_RULES'=>array(

'year/:

year\d/:

mouth\d/:

date\d'=>'Index/index'

),

1)规则表达式配置路由

'my'=>'Index/index'//静态地址路由

':

id/:

num'=>'Index/index'//动态地址路由

':

my/:

num'=>'Index/index'//动态和静态地址路由

'year/:

year\d/:

mouth\d/:

date\d'=>'Index/index'

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

当前位置:首页 > 解决方案 > 学习计划

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

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