最新ThinkPHP学习笔记.docx

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

最新ThinkPHP学习笔记.docx

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

最新ThinkPHP学习笔记.docx

最新ThinkPHP学习笔记

Thinkphp

1.单入口原理

访问任何文件都必须通过某一个固定文件,如index.php,这就是单入口原理。

2.XX收录网站的时候,更倾向于目录和静态文件。

3.基础项目中一个模块就是一个文件夹,模块的增删改查操作就是文件夹里对应的文件。

4.在ThinkPHP中,一个模块就是一个类文件,也就是模块文件,而模块的增删改查操作,就是该类文件中的对应的方法。

5.在ThinkPHP中,要增加一个功能模块就是要加一个类文件,即模块文件,要对该模块增加一个操作,就是在该类文件中加一个方法。

6.在PHP中,在回标签(?

>)之后不能有任何输出,包括空格,否则在被包含时可能会报错。

7.为了保险起见,不要加回标签(?

>);

8.在TP中有全局配置文件,这里的配置文件影响每一个应用,但有时候我们需要改变某个应用的配置项。

那么,我们就需要单独为该应用进行配置,这就是局部配置文件,、。

9.局部配置文件的优先级高于全局配置文件。

10.配置文件在项目的conf中。

11.要想读取配置文件中的任何一个选项,可以用一个C()方法。

例如:

echoC('DEFAULT_CHARSET');

12.C()方法用于获取配置文件中的选项。

(大写C);

13.函数跟踪,在学习或观看一个项目时,为了知道某个函数的来源,需要对函数进行跟踪定位。

14.公共函数:

在TP的Common中的common.php中的函数即为公共函数,可以在项目的任何地方使用。

15.局部函数:

在项目应用中的Common中的common.php文件中定义的函数,即为局部函数,该函数只在该应用中有效,在其他应用中不能使用。

16.公共类文件。

17.自定义类文件。

18.如何使用并包含自定义类文件。

Import(‘ORG.Mycls.Person’);

$user=newPerson();

$user->show();

19.定义变量并分配模板;

publicfunctionindex(){

$name="李帅帅";

$age="22";

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

$this->assign('age',$age);

$this->display();

}

在模板中是这样接收:

{$name}

{$age}

20.定义控制器

在Action文件夹中新建一个UserAction.class.php,即完成一个控制器的定义。

php

classUserActionextendsAction{

publicfunctionindex(){

echo"定义了一个用户模块控制器!

";

}

}

一定要符合命名规范。

21.跨模块调用

即想在Index模块中调用User模块中的index()方法。

classIndexActionextendsAction{

publicfunctionindex(){

R('User/index');

}

}

跨模块调用,要用R()方法。

22.页面跳转

publicfunctionindex(){

$this->success('登录成功!

','add');

}

publicfunctionadd(){

echo"在我这儿添加数据吧!

";

}

其中$this->success('登录成功!

','add');只支持本模块跳转。

23.URL伪静态设置,

'URL_HTML_SUFFIX'=>'html',//URL伪静态后缀设置,如果后面什么都没有,则没有后缀名。

而地址栏显示的就是文件夹格式,有利于XX收录。

24.URL生成,

利用U()方法可以生成地址。

如U(‘add’)可以生成add方法所在的地址。

publicfunctionadd(){

echoU('add');//生成本模块中add的地址。

}

所得的结果为:

/TPtest/test1/admin.php/Index/add;

publicfunctionindex(){

echoU('User/index','id=10&name=user1');

//生成User模块中index的地址,并传递参数。

/TPtest/test1/admin.php/User/index/id/10/name/user1

//$this->success('登录成功!

','add');

}

25.所以跨模块跳转为:

publicfunctionindex(){

$this->success('登录成功!

',U('User/del'));

}

让U()方法生成地址。

26.登录失败跳转:

publicfunctionindex(){

$this->error('登录失败!

',U('User/del'));

}

为error()方法。

27.重定向

没有过渡页面,直接跳转到目标页面。

publicfunctionindex(){

$this->redirect('User/index');

//跨模块重定向。

$this->redirect(‘add’);

//本模块重定向。

}

$this->redirect(‘User/del’,’id=10’);

携带参数重定向,即该方法可以带参数。

重定向用redirect()方法。

28.获取URL参数

echo"

";

print_r($_GET);

echo"

";

利用$_GET就可以获取URL参数。

29.URL重写:

a).修改apache配置文件加载rewrite.

b).在.htaccess中写重写规则。

30.页面上能发生跳转的有a连接和表单。

31.URL大小写,

只要在项目配置(全局配置或局部配置文件)中,增加:

1.'URL_CASE_INSENSITIVE' =>true

就可以实现URL访问不再区分大小写了。

1.http:

//serverName/index.php/User/add

2.//将等效于

3.http:

//serverName/index.php/user/add

32.URL模式

修改

地址为当前模块下的edit方法。

删除

__URL__表示当前模块。

33.U()方法用于生成当前方法的地址。

34.统一链接的地址,

U('edit')}">修改

{:

U(‘edit)}可以统一链接地址,表示生成当前模块下edit方法的地址。

删除

35.URL路由,

要使用路由技术,需要在配置文件中开启路由。

1.'URL_ROUTER_ON'   => true, //开启路由

2.'URL_ROUTE_RULES' => array( //定义路由规则

3.    'news/:

year/:

month/:

day' => array('News/archive', 'status=1'),

4.    'news/:

id'               => 'News/read',

5.    'news/read/:

id'          => '/news/:

1',

6.),

路由可以对地址进行伪装,和简化地址。

假地址对应真地址。

客户看到的地址与真实的地址不同。

36.如果要在模板里面使用php代码,需要用模板标签{}。

37.AR操作,

查看最近的一条完整的SQL语句,$m->getLastSql().

插入一条记录:

a).publicfunctioninsert(){

$username=$_POST['username'];

$password=$_POST['password'];

$sql="insertintouser(username,password)values('$username','$password')";

$user=M();

if($user->execute($sql)){

$this->success('添加成功!

',U('index'));

}

}

b).publicfunctioninsert(){

$user=M('User');

$user->create();

if($user->add()){

$this->success('注册成功!

',U('index'));

}

}

AR操作中,增删改查时,表单name属性的值必须与数据表中字段对应相等。

否则操作不成功。

修改一条记录:

publicfunctionedit(){

$id=$_GET['id'];

$user=M('User');

$row=$user->find($id);

$this->assign('row',$row);

$this->display();

}

publicfunctionupdate(){

$user=M('User');

$user->create();

if($user->save()){

$this->success('修改成功!

',U('index'));

}

}

删除一条记录:

publicfunctiondelete(){

$id=$_GET['id'];

$user=M('User');

if($user->delete($id)){

$this->success('删除成功!

',U('index'));

}

}

查看一条记录:

publicfunctionindex(){

$user=M('User');

$rows=$user->select();

$this->assign('rows',$rows);

$this->display();

}

AR操作函数:

$obj->select();查询数据,返回一个二维数组。

函数里可以有id参数,select(3);

$obj->find();查询数据,返回一维数组,而且是返回所有记录的第一条数据。

函数里可以有id参数,find(4);

$obj->delete($id),删除数据,必须指定参数,指定要删除的记录。

添加数据:

$user->create();//创建数据对象data。

$user->add();

把不是表单提交过来的数据插入:

$user=M(‘User’);

$r=$user->create();

If($r){

$user->time=time();//只要给$user设置属性,就会编程数据对象data.

$user->password=md5($user->password);

$user->add();

}

修改一条数据:

$user=M(‘User’);

$r=$user->create();

If($r){

$user->time=time();

$user->save();

$this->success(‘修改成功!

’,U(‘index’));

}

38.CURD操作:

a)$row=$user->order(‘iddesc’)->select();

按id倒序排序的方式显示。

b)$row=$user->order(‘iddesc’)->limit(3)->select();

获取倒序排序的前3条数据。

c)$row=$user->field(‘idusername’)->order(‘iddesc’)->limit(3)->select();

光显示id和username字段的数据。

d)$row=$user->field(‘password’,true)->order(‘iddesc’)->limit(3)->select();

除了password字段外,其余字段全部显示数据。

e)$row=$user->field(‘password’,true)->where(‘id>3’)->order(‘iddesc’)->limit(3)->select();

查询id>3的数据。

Selectif(sex=0,’男’,’女’)sex,count(*)fromusergroupbysex;按照sex字段进行分组,并且如果sex=0则显示男,如果sex=1则显示女。

f)$row=$user->field(‘sex,count(*)’)->group(‘sex’)->select();//分组查询。

如果涉及多表查询,则直接写SQL语句。

其中select()方法必须放到最后,其他方法可以调换顺序,最后select()会自动整理顺序,形成完整的SQL语句。

直接写SQL语句的方式:

1.$m=M();

$sql=selectuser.usernamescore.numfromuser,scorewhereuser.id=score.user_id;

$rows=$m->query($sql);

query()方法用来执行查询语句。

2.$m=M();

$sql=insertintouser(username,password)value(‘user1’,’123’);

$r=$m->execute($sql);

execute()方法用来执行增,删,改语句。

2.CURD连贯操作之添加数据:

$sql=insertintouser(username,password)value(‘user1’,’123’);//内部组建的语句,无需书写。

$user=M(‘User’);

$user->create();

$user->add();

3.CURD连贯操作之删除数据:

a).deletefromuserehereid=5;//删除id=的的记录。

$user=M(‘User’);

$user->delete(5);

b).deletefromuserid>5;//删除id>5的记录。

$user=M(‘User’);

$user->where(‘id>5’)->delete();

c).deletefromuserwhereidin(‘1,3,5’);//删除id为1,3,5的记录。

$user=M(‘User’);

$user->delete(‘1,3,5’);

4.CURD连贯操作之修改数据:

a).updateusersetusername=’user11’,password=’456’whereid=1;

$user=M(‘User’);

$user->create();

$user->save();

b).updateusersetusername=’user12’,password=’234’whereid>1andid<5;

$user=M(‘User’);

$user->create();

$user->where(‘id>1andid<5’)->save();

模型的主要作用是操作数据库。

视图:

模板替换:

__PUBLIC__:

../Public:

__ROOT__:

__APP__:

__URL__:

__ACTION__:

__SELF__:

public:

/TPtest/test2/Public

app:

/TPtest/test2/admin.php

../public:

/TPtest/test2/Admin/Tpl/Public

root:

/TPtest/test2

action:

/TPtest/test2/admin.php/Index/index

url:

/TPtest/test2/admin.php/Index

self:

/TPtest/test2/admin.php

获取内容:

有些时候我们不想直接输出模板内容,而是希望对内容再进行一些处理后输出,就可以使用fetch方法来获取解析后的模板内容,在Action类里面使用

1.$content = $this->fetch();

模板引擎

{$title}在模板中会被解析成:

php

echo$title;

?

>

如果前面没有$的话就没问题。

如{title};

修改定界符:

如果{$title}与js中的{$a}有重复的话,php解析时会报错。

这时可以修改定界符{}为<{}>来解决问题。

系统变量:

$this->assign(‘id’,$_GET[‘id’]);

超全局数组可以不用分配,直接在模板中使用,如:

{$_GET[‘id’]};

{$_POST[‘tot’]}

,这些都不用分配,直接在模板中使用即可。

在ThinkPHP中,所有方法已经默认开启了session_start(),在使用session时无需在开启。

$_SESSION[]也无需分配,直接在模板中使用即可。

系统变量可以这样写:

{$Think.get.id}//获取$_GET里面的id。

{$Think.post.tot}//获取$_POST里面的tot。

1.在模板中使用函数,在定界符中加:

函数就可以使用。

例如:

{:

show()}

即在模板中使用控制器中定义的函数show().使用变量是用$,即

{$name}

而且该方法只能是该模板中调用该模板所对应的函数中的方法。

例子:

{:

substr(strtoupper($title),0,6)},在模板中使用函数。

2.{$title|strtoupper|substr=###,0,6},###表示模板变量本身的参数位置。

所有的函数都可以这样用。

3.

{~show()}

执行函数但不输出用~后面加函数。

4.在模板中使用运算符:

例如:

{$a+$b}{$a-$b}等等。

5.包含文件:

header"/>


cccccccccc

cccccccccc

cccccccccc

cccccccccc

cccccccccc


footer"/>

其中Public模块为Tpl文件夹下,Public文件夹中有文件header.html和footer.html.也就是要包含的文件。

模板如何引用自己的静态资源?

../public:

/TPtest/test2/Admin/Tpl/Public

cccccccccc

cccccccccc

../Public表示当前应用中(模板)Tpl下的Public文件夹。

模板替换仅仅在$this->display()所要加载的模板中有效,在其他文件中一概无效。

可以在模板文件中使用任何的php代码。

主要有两种格式:

php?

>和

for标签的使用方法:

{$i}

if标签的使用方法:

#ccc">{$i}

{$i}

比较标签:

等于:

eq

不等于:

neq

大于等于:

eqt

小于等于:

elt

小于:

lt

大于:

gt

恒等于:

heq

不恒等于:

nheq

在模板中的标签中,只有标签中的属性可以有$符号,其余标签不能有。

三元运算符:

1.{$status?

'正常':

'错误'}

2.{$info['status']?

$info['msg']:

$info['error']}

标签嵌套:

系统内置的标签中,volist、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等标签都可以嵌套使用。

例如:

1.

2.    

3.        {$sub.name}

4.    

5.

上面的标签可以用于输出双重循环。

默认的嵌套层次是3级,所以嵌套层次不能超过3层,如果需要更多的层次可以指定TAG_NESTED_LEVEL配置参数

模板继承:

模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义的区块进行重载。

因此,模板继承的优势其实是设计基础模板中的区块(block)和子模板中替换这些区块。

每个区块由标签组成,并且不支持block标签的嵌套。

1.

2.{$title}

3.

4.首页

5.

6.夏日的街头,吊带装、露背装、一步裙、迷你裙五彩缤纷、争妍斗艳。

爱美的女孩们不仅在服饰搭配上费尽心机,饰品的选择也十分讲究。

可惜在商店里买的项链、手链、手机挂坠等往往样式平淡无奇,还容易出现雷同现象。

资讯

7.

8.服饰□学习用品□食品□休闲娱乐□小饰品□论坛

9.

10.

11.

(2)缺乏经营经验

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

当前位置:首页 > 经管营销 > 经济市场

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

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