笔记自己整理的thinkphp笔记分析解析.docx
- 文档编号:25999129
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:45
- 大小:39.06KB
笔记自己整理的thinkphp笔记分析解析.docx
《笔记自己整理的thinkphp笔记分析解析.docx》由会员分享,可在线阅读,更多相关《笔记自己整理的thinkphp笔记分析解析.docx(45页珍藏版)》请在冰豆网上搜索。
笔记自己整理的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表单如下
用户名:
密 码:
验证码:
'+Math.random()"> 获取表单数据的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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 笔记 自己 整理 thinkphp 分析 解析
![提示](https://static.bdocx.com/images/bang_tan.gif)