您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> php编程 >> 正文

ThinkPHP框架入门知识

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁 实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方 面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

ThinkPHP基于MVC的PHP框架
M – Model 模型                工作:负责数据的操作
V – View  视图(模板)        工作:负责前台页面显示
C – Controller 控制器(模块) 工作:描述功能

ThinkPHP核心文件介绍
├─ThinkPHP.php     框架入口文件
├─Common 框架公共文件
├─Conf 框架配置文件
├─Extend 框架扩展目录
├─Lang 核心语言包目录
├─Lib 核心类库目录
│  ├─Behavior 核心行为类库
│  ├─Core 核心基类库
│  ├─Driver 内置驱动
│  │  ├─Cache 内置缓存驱动
│  │  ├─Db 内置数据库驱动
│  │  ├─TagLib 内置标签驱动
│  │  └─Template 内置模板引擎驱动
│  └─Template 内置模板引擎
└─Tpl 系统模板目录

#项目目录结构及说明:
Home 前台应用文件夹
├─Common 项目公共文件目录
├─Conf 项目配置目录
├─Lang 项目语言目录
├─Lib 项目类库目录
│  ├─Action Action类库目录
│  ├─Behavior 行为类库目录
│  ├─Model 模型类库目录
│  └─Widget Widget类库目录
├─Runtime 项目运行时目录
│  ├─Cache 模板缓存目录
│  ├─Data 数据缓存目录
│  ├─Logs 日志文件目录
│  └─Temp 临时缓存目录
└─Tpl 项目模板目录

ThinkPHP 3 MVC模式和URL访问
什么是MVC
M -Model 编写model类 对数据进行操作
V -View  编写html文件,页面呈现
C -Controller 编写类文件(UserAction.class.php)
ThinkPHP的MVC特点
编写非常灵活,只有view都可以执行

ThinkPHP的MVC对应的目录
M 项目目录/应用目录/Lib/Model
V 项目目录/应用目录/Tpl
C 项目目录/应用目录/Lib/Action
url访问C
url的4种访问方式
1.PATHINFO 模式

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

2.普通模式

http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

3.REWRITE模式

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

4.兼容模式

http://域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2

ThinkPHP 3.1.2 输出和模型使用
ThinkPHP 3 的输出
a、通过 echo 等PHP原生的输出方式在页面中输出
b、通过display方法输出
想分配变量可以使用assign方法
c、修改左右定界符
休要修改配置文件中的配置项
‘TMPL_L_DELIM’=>'<{‘, //修改左定界符
‘TMPL_R_DELIM’=>’}>’, //修改右定界符

ThinkPHP 3 的模型使用
需要在方法中通过new Model(表名)的形式操作数据库
$m=new Model(‘User’);
$arr=$m->select();
‘DB_TYPE’=>’mysql’,   //设置数据库类型
‘DB_HOST’=>’localhost’,//设置主机
‘DB_NAME’=>’thinkphp’,//设置数据库名
‘DB_USER’=>’root’,    //设置用户名
‘DB_PWD’=>”,        //设置密码
‘DB_PORT’=>’3306′,   //设置端口号
‘DB_PREFIX’=>’tp_’,  //设置表前缀
也可以使用DSN方法进行配置
‘DB_DSN’=>’mysql://root:@localhost:3306/thinkphp’,//使用DSN方式配置数据库信息
如果两种方式同时存在,以DSN方式为优先

还有一种简单实用模型的方式
M() 等效为 new Model();
$m=M(‘User’);
$arr=$m->select();

使用模型的实例可以对数据进行操作,操作的工作一般就是对数据库进行 增删改查 CURD
增 -C Create $m->add()
删 -D Delete $m->delete()
改 -U Update $m->save()
查 -R Read   $m->select()

a、模板可以遍历数组


1
2
3
    <volist name='data' id='vo'>
            <{$vo.id}>----<{$vo.username}>-----<{$vo.sex}><br/>
    </volist>
b、我们可以开启调试功能中的page_trace
1.开启调试功能
//3.开启调试模式(在主入口文件配置index.php)
define(‘APP_DEBUG’,true);
2.我们需要设置配置文件,开启页面trace
‘SHOW_PAGE_TRACE’=>true,//开启页面Trace,需要有$this->display()才显示

CURD特性
读取数据
对数据的读取 Read
$m=new Model(‘User’);
$m=M(‘User’);
select
$m->select();//获取所有数据,以数组形式返回
find
$m->find(2);//获取单条数据
getField(字段名)//获取一个具体的字段值
$arr=$m->where(‘id=2′)->getField(‘username’);
创建数据
对数据的添加 Create
$m=new Model(‘User’);
$m=M(‘User’);
$m->字段名=值
$m->add();
返回值是新增的id号
删除数据
$m=M(‘User’);
$m->delete(2);               //删除id为2的数据
$m->where(‘id=2′)->delete(); //与上面效果相同,也是删除id为2的数据
返回值是受影响行数
更新数据
$m=M(‘User’);
$data['id']=1;
$data['username']=’ztz2′;
$m->save($data);
返回值是受影响行数

查询方式
普通查询方式
a、字符串
$arr=$m->where(“sex=0 and username=’gege'”)->find();
b、数组
$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小于等于
LIKE 模糊查询
$data['username']=array(‘like’,’%ge’);
$arr=$m->where($data)->select();
NOTLIKE
$data['username']=array(‘notlike’,’%ge%’); //notlike中间没有空格
$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 BETWEEN 5 AND 7 ) )
$data['id']=array(‘not between’,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(‘not in’,array(4,6,7));
$arr=$m->where($data)->select();
//SELECT * FROM tp_user WHERE ( id NOT IN (4,6,7) )
区间查询
$data['id']=array(array(‘gt’,4)