笔记自己整理的thinkphp笔记分析解析.docx

上传人:b****7 文档编号:25999129 上传时间:2023-06-17 格式:DOCX 页数:45 大小:39.06KB
下载 相关 举报
笔记自己整理的thinkphp笔记分析解析.docx_第1页
第1页 / 共45页
笔记自己整理的thinkphp笔记分析解析.docx_第2页
第2页 / 共45页
笔记自己整理的thinkphp笔记分析解析.docx_第3页
第3页 / 共45页
笔记自己整理的thinkphp笔记分析解析.docx_第4页
第4页 / 共45页
笔记自己整理的thinkphp笔记分析解析.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

笔记自己整理的thinkphp笔记分析解析.docx

《笔记自己整理的thinkphp笔记分析解析.docx》由会员分享,可在线阅读,更多相关《笔记自己整理的thinkphp笔记分析解析.docx(45页珍藏版)》请在冰豆网上搜索。

笔记自己整理的thinkphp笔记分析解析.docx

笔记自己整理的thinkphp笔记分析解析

Thinkphp

Lesson_1ThinkPHP.3.1.2.介绍及安装

1.总结

a)Home放前台,Admin放后台,Public放共有的资源

2.配置gvim

Ø打开安装目录下的_vimrc文件,添加

✧setnu!

显示行数

✧colorschemedarkblue背景颜色设置为深蓝色

Øgvim配置不自动生成备份文件

默认情况下用gVim编辑文件时,会自动生成带~的备份文件。

如果不想在编辑文件时自动生成备份文件的话,可以这么做:

打开gVim安装目录下的vimrc_example.vim,将其中的如下部分中的else语句用引号注释掉:

ifhas("vms")

setnobackup"donotkeepabackupfile,useversionsinstead

else

setbackup"keepabackupfile

即将上面四句改为:

ifhas("vms")

setnobackup"donotkeepabackupfile,useversionsinstead

"else

"setbackup"keepabackupfile

里,else部分用双引号注释掉即可。

setbackup是设置使用自动生成备份文件的命令。

Øwindows上gvim的编码设置

Windows系统默认的编码是cp936,所以用gvim一打开文件,默认是用gb2312编码打开的。

这导致很多时候打开的文件是乱码,不能正常显示,那要怎么解决这个问题呢?

很简单,看下面的设定:

打开gvim,到菜单栏找到“编辑”,在下拉菜单找到“启动设定”

点击“启动设定”进去,你会看到相应的配置文件

在文件的末尾加入如下设定:

setencoding=utf-8

setfileencodings=utf-8,chinese,latin-1

ifhas("win32")

setfileencoding=chinese

else

setfileencoding=utf-8

endif

source$VIMRUNTIME/delmenu.vim

source$VIMRUNTIME/menu.vim

languagemessageszh_CN.utf-8

 

保存后退出gvim,重新启动,惊喜出现了,乱码不见了,是不是很简单,可以动手试一试了!

3.ThinkPHP核心文件介绍

├─ThinkPHP.php框架入口文件

├─Common框架公共文件

├─Conf框架配置文件

├─Extend框架扩展目录

├─Lang核心语言包目录

├─Lib核心类库目录

│├─Behavior核心行为类库

│├─Core核心基类库

│├─Driver内置驱动

││├─Cache内置缓存驱动

││├─Db内置数据库驱动

││├─TagLib内置标签驱动

││└─Template内置模板引擎驱动

│└─Template内置模板引擎

└─Tpl系统模板目录

4.项目目录结构及说明

Home前台应用文件夹

├─Common项目公共文件目录

├─Conf项目配置目录

├─Lang项目语言目录

├─Lib项目类库目录

│├─ActionAction类库目录

│├─Behavior行为类库目录

│├─Model模型类库目录

│└─WidgetWidget类库目录

├─Runtime项目运行时目录

│├─Cache模板缓存目录

│├─Data数据缓存目录

│├─Logs日志文件目录

│└─Temp临时缓存目录

└─Tpl项目模板目录

Lesson_2ThinkPHP.3.1.2.MVC模式和URL访问

1.字符串串接的方法

使用’.’分割的两个字符串会在显示时串接起来

2.开启调试功能

有时由于缓存的原因,导致自己做的修改不能立即生效,此时删除Runtime文件夹即可,也可以开启调试模式,这样系统不会再缓存.但是建议在项目搭建到服务器时,关闭调试模式

Ø开启调试功能(在项目文件夹下的index.php中)

define('APP_DEBUG',true);

Ø我们需要设置配置文件(Conf/config.php),开启页面trace

'SHOW_PAGE_TRACE'=>true,//开启页面Trace

3.ThinkPHP的MVC对应的目录

M项目目录/应用目录/Lib/Model

V项目目录/应用目录/Tpl

C项目目录/应用目录/Lib/Action

4.url的4种访问方式

ØPATHINFO模式--重点!

http:

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

例如:

http:

//localhost/thinkPHPTest/Index.php/Index/show/name/yinliang

访问的是\Home\Lib\Action\IndexAction.class.php的index方法,并将name=’yinliang’传递给后台

Ø普通模式

http:

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

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

例如:

http:

//localhost/thinkPHPTest/Index.php?

m=Index&a=show&name=yinliang&age=12

ØREWRITE模式

http:

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

Ø兼容模式

http:

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

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

Lesson_3,4ThinkPHP.3.1.2.输出和模型使用

1.配置项目文件详解(__ROOT__\Home\Conf\config.php)

'URL_PATHINFO_DEPR'=>'/',//修改URL的分隔符

'TMPL_L_DELIM'=>'<{',//修改左定界符

'TMPL_R_DELIM'=>'}>',//修改右定界符

'DB_TYPE'=>'mysql',//设置数据库类型

'DB_HOST'=>'localhost',//设置主机

'DB_NAME'=>'thinkphp',//设置数据库名

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

'DB_PWD'=>'',//设置密码

'DB_PORT'=>'3306',//设置端口号

'DB_PREFIX'=>'tp_',//设置表前缀

'DB_DSN'=>'mysql:

//root:

@localhost:

3306/thinkphp',//使用DSN方式配置数据库信息

'SHOW_PAGE_TRACE'=>true,//开启页面Trace

'TMPL_TEMPLATE_SUFFIX'=>'.html',//更改模板文件后缀名

'TMPL_FILE_DEPR'=>'_',//修改模板文件目录层次

'TMPL_DETECT_THEME'=>true,//自动侦测模板主题

'THEME_LIST'=>'your,my',//支持的模板主题列表

'TMPL_PARSE_STRING'=>array(//添加自己的模板变量规则

'__CSS__'=>__ROOT__.'/Public/Css',

'__JS__'=>__ROOT__.'/Public/Js',

),

'LAYOUT_ON'=>true,//开启模板渲染

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

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

'APP_GROUP_LIST'=>'Home,Admin',//项目分组设定

'DEFAULT_GROUP'=>'Home',//默认分组

2.项目配置(__ROOT__\index.php)

php

//1.确定应用名称Home

define('APP_NAME','Home');

//2.确定应用路径

define('APP_PATH','./Home/');

//3.开启调试模式

define('APP_DEBUG',true);

//4.应用核心文件

require'./ThinkPHP/ThinkPHP.php'

?

>

3.获取表单中的数据

html中的form表单如下

用户名:


密    码:


验证码:


获取表单数据的Action对象函数如下

publicfunctiondo_login(){

echo"fasdfasdfsd";

dump($_POST['username']);

}

注:

如果表单中的method="get",则上述函数中的$_POST要改为$_GET

4.超链接地址的写法

同项目下的超链接可不写ip地址如要访问项目thinkphp下的UserAction中的delete函数,可写为

id=<{$vo.id}>">delete

但是为了防止因项目名称(thinkphp)的更改,导致系统不能使用,可使用”__URL__”替换”/thinkphp/index.php/User/”,如以上地址改写为

id=<{$vo.id}>">delete

5.ThinkPHP3的输出

a)通过echo等PHP原生的输出方式在页面中输出

b)通过display方法输出,如

想分配变量可以使用assign方法,如在Action中

php

//本类由系统自动生成,仅供测试用途

classIndexActionextendsAction{

publicfunctionindex(){

$this->assign('name','yinliang');//给变量name分配值yinliang

$this->display();//输出Home\Tpl\Index\index.html

}

publicfunctionshow(){

echo"show:

helloworld!

!

!

";

}

}

?

>

html页面中显示的方法:

在Home\Tpl\Index\index.html中要访问name变量可以在文件中添加{$name}(修改了左右定界符的则把{,}分别修改为修改后的左右定界符)

如:

Hello{$name}

6.建议修改左右定界符(为了防止{$data}与Jquery语法混淆)

休要修改配置文件(Conf/config.php)中的配置项

'TMPL_L_DELIM'=>'<{',//修改左定界符

'TMPL_R_DELIM'=>'}>',//修改右定界符

7.ThinkPHP3的模型使用(与数据库链接,操作数据库)

a)创建数据库的步骤

i.进入phpmyadminURL为http:

//127.0.0.1/phpmyadmin/

ii.点击数据库标签跳转到创建数据库的页面

iii.左侧的输入框输入数据库的名字(例如thinkphp3),右侧选择数据库编码为utf8_general_ci点击创建

iv.点击创建的数据库(例如thinkphp3),即可创建表

v.先输入要创建的表的名字,再输入标的字段数,点击执行

vi.接下来的页面A_I表示自增,索引下拉列表可以选择主键,唯一等属性,整理表示编码格式

vii.存储引擎选择MyISAM

viii.……………………………..

b)配置数据库(在Conf/config.php中配置数据库相关信息)

'DB_TYPE'=>'mysql',//设置数据库类型

'DB_HOST'=>'localhost',//设置主机

'DB_NAME'=>'thinkphp',//设置数据库名

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

'DB_PWD'=>'',//设置密码

'DB_PORT'=>'3306',//设置端口号

'DB_PREFIX'=>'tp_',//设置表前缀加表前缀是为了更好的区分表,比如cw_代表财务cg_代表采购,如果没有表前缀,则将tp_去掉即可

注:

也可以使用DSN方法进行配置

'DB_DSN'=>'mysql:

//root:

@localhost:

3306/thinkphp',//使用DSN方式配置数据库信息

如果两种方式同时存在,以DSN方式为优先

c)在Action的index函数中获取值

publicfunctionindex(){

$m=newModel(User);//记住U大写

$arr=$m->select();//user表中的所有数据都被放到数组$arr中

$this->assign('name',$arr[1]['username']);//将name赋值为数组$arr中下标为//1的元素的username的值

$this->display();

}

d)还有一种简单实用模型的方式

M()等效为newModel();

$m=M('User');

$arr=$m->select();

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

增-CCreate$m->add()

删-DDelete$m->delete()

改-UUpdate$m->save()

查-RRead$m->select()

f)模板可以遍历数组:

html页面中

<{$vo.id}>----<{$vo.username}>-----<{$vo.sex}>

在Action中的index中给array赋值

publicfunctionindex(){

$m=newModel('User');

$arr=$m->select();

$this->assign('array',$arr);

$this->assign('name',$arr[1]['username']);

$this->display();

}

Lesson_5,6,7ThinkPHP.3.1.2.输出和模型使用.2

1.ThinkPHP3.1.2CURD特性

a)ThinkPHP3读取数据

对数据的读取Read

$m=newModel('User');

$m=M('User');

select

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

find

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

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

$arr=$m->where('id=2')->getField('username');

b)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);

}

}

c)ThinkPHP3删除数据

$m=M('User');

$m->delete

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

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

返回值是受影响行数

代码示例:

publicfunctiondelete(){

$id=$_GET['id'];

$m=newModel('User');

var_dump($id);

//$m->delete(11);

$count=$m->where('id='.$_GET['id'])->delete();

if($count>0){

$this->success("Datahavebeendeletesuccessfully!

!

!

");

//$this->success("数据删除成功!

!

!

");

}else{

$this->error("Theoperationofdeletingdataexiterror!

!

!

");

//$this->error("数据删除失败!

!

!

");

}

}

d)ThinkPHP3更新数据

$m=M('User');

$data['id']=1;

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

$m->save($data);

返回值是受影响行数

代码示例:

publicfunctionupdate(){

$m=newModel('User');

$data['id']=$_POST['id'];

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

$data['sex']=$_POST['sex'];

$count=$m->save($data);

if($count>0){

$this->success("Datahavebeenmodifysuccessfully!

!

!

",index);

}else{

$this->error("Theoperationofmodifingdataexiterror!

!

!

",index);

}

}

Lesson_8,9,10ThinkPHP.3.1.2.查询方式的一般使用

1.ThinkPHP3.1.2查询方式

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

i.普通查询方式

ii.字符串

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

iii.数组

$data['sex']=0;

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

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

注意:

这种方式默认是and的关系,如果使用or关系,需要添加数组值

$data['sex']=0;

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

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

iv.表达式查询方式

$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();

}

b)LIKE模糊查询

$data['username']=array('like','%ge');//查询username以ge结尾的user

$data['username']=array('like','%ge%');//查询username包含ge的user

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

c)NOTLIKE

$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();

d)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();

e)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']=arra

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

当前位置:首页 > 求职职场 > 简历

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

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