thinkphp3.2学习备忘录

序言

由于本人在学习的过程中很容易忘记框架,为了快速拾取和纠错,特列举基础内容。之后不断更新。

一、ThinkPhp3.2文件目录介绍

这里写图片描述
这里写图片描述
其中要注意www/Common/Conf/config.php是www项目的配置文件
而www/Home/Conf/config/config.php是当前项目Home分组的配置文件
convention.php和这两个config.php如果存在同名配置文件,后者覆盖前者。
例如设置:
这里写图片描述
其中模版引擎的默认方案是左右开始结束标识符为{},如上图。
这里写图片描述
这里写图片描述

二、如何调用框架

1、引入框架创建目录

在www项目根目录的index.php下引入ThinkPhP.php即可。
这里写图片描述
引入之后可在www根目录下生成以下文件目录
这里写图片描述

2、四种路由形式

路由:系统从URL参数中分析出当前请求的分组、控制器和操作的过程就是“路由”。
tp框架路由共有4种形式:
1. 基本get形式:http://网址/index.php?m=分组&c=控制器&a=操作方法
2. pathinfo路径形式[默认方式]http://网址/index.php/分组/控制器/操作方法
3. rewrite重写形式(伪静态技术)省略index.php入口文件http://网址/Home/Index/index
4. 兼容形式http://网址/index.php?s=/分组/控制器/操作方法
注意一般增加get参数时如下使用:
http://网址/index.php/分组/控制器/操作方法/名称/值/名称/值
###创建控制器和视图模版
名字对其即可
这里写图片描述
注意控制器调用视图模板方式
this>display() t h i s − > d i s p l a y ( ) this->display(模板名称)
$this->display(控制器/模板名称)

3、使用系统变量

__CONTROLLER__路由地址控制器信息
__MODULE__路由地址分组信息
__ACTION__路由地址操作方法信息
__SELF__路由地址全部信息
MODULE_NAME
CONTROLLER_NAME
ACTION_NAME

4、开发和生成模式说明

入口文件index.php

//框架两种模式:[默认]生产(线上)、开发(调试)
define('APP_DEBUG',true);//开发(错误提示非常具体)
//define('APP_DEBUG',false);//生产(错误提示模糊)

开发调试模式:每次请求加载每个应用文件,会自动清除common~runtime.php文件
生产模式:该模式请求过程会把通用文件给“编译到一个文件里边”

三、MODULE和命名空间

这里注意许多不认识的函数如D()I(),去thinkPHP\Conf\convention.php查询

1、两种方式实例化model对象

实例化普通model对象
$model = new\Model\XXXModel();

除了可以实现简单操作(调用父类Model方法实现)
也可以实现一些复杂操作(调用具体普通model方法实现)

实例化基类Model对象

可以实现对数据库的基本操作

$model = D(); //实例化基类Model,没有关联任何表
$model = D('Goods'); //实例化父类Model对象,并操作xx_goods业务数据表

(该方式允许我们即使不创建具体的model模型类文件,也可以对数据表的数据进行操作)
如果一个数据表没有特殊方法要求,就可以通过D(XXX)进行操作。
如果数据表有特殊方法(例如用户名和密码判断需要一个特殊方法),就需要在普通model模型类里边定义好,通过new \Model\XXXModel()形式实例化对象,进而操作特殊方法。

2、Control与Viem直接Module的传递

在XXXcontrol写 this>assign(io, t h i s − > a s s i g n ( ′ i o ′ , info),注意
传递到XXX.html,在XXX.html调用$io即可.

3、具体获得数据操作方法使用

$model->操作方法

where():限制操作(查询)条件
limit():
limit(长度):限制查询的条数
limit(偏移量,长度):偏移量=(页码-1)*长度
field():限制查询的字段
order():排序查询order by
group():分组查询group by
having():条件设置方法
这里写图片描述

4、数据的增删改操作方法

①增:Model->add()

两种方式

1)数组方式

=array((=>)(=>)) 数 组 = a r r a y ( 元 素 ( 下 标 => 元 素 值 ) 元 素 ( 下 标 => 元 素 值 ) … ) model(普通对象)->add(数组);

2)AR(Active Record 活跃记录)方式

model>()=;// m o d e l − > 属 性 ( 字 段 ) = 值 ; / / 属 性 字 段 与 数 据 表 字 段 一 致 , 否 则 不 给 写 入 数 据 model->add();

②改:Model->save()

与add添加一致。
但要注意,如果只修改一个,需要加入主键id作为修改标识。
修改多个,就需要model->where(条件)->save();

③删:Model->delete()

model>where()>delete() m o d e l − > w h e r e ( ) − > d e l e t e ( ) 或 者 model->delete(id);//其中id为主键

5、执行原生sql语句
$sql="insert select update delete ......";
①查询语句:$model 对象->query($sql);
②添加/修改/删除语句:$model 对象 ->execute($sql);
6、表单自动验证

①通过 model>create();model m o d e l − > c r e a t e ( ) ; 方 法 收 集 表 单 信 息 , 该 方 法 同 时 具 备 表 单 自 动 验 证 功 能 , 其 还 具 有 非 法 字 段 过 滤 功 能 。 ② 验 证 规 则 在 m o d e l 模 型 类 中 修 改 _validate值
protected $_validata=array(
array(字段,规则,错误提示[,条件,附加规则,时间])
)

7、非限定名称、限定名称、完全限定名称

命名空间中的三个名称的术语如下所示:
1.非限定名称,或不包含前缀的类名称,例如 $comment = new Comment();。如果当前命名空间是Blog\Article,Comment将被解析为Blog\Article\Comment。如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。

2.限定名称,或包含前缀的名称,例如 $comment = new Article\Comment();。如果当前的命名空间是Blog,则Comment会被解析为Blog\Article\Comment。如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。

3.完全限定名称,或包含了全局前缀操作符的名称,例如 $comment = new \Article\Comment();。在这种情况下,Comment总是被解析为代码中的文字名(literal name)Article\Comment。

其实可以把这三种名称类比为文件名(例如 comment.php)、相对路径名(例如 ./article/comment.php)、绝对路径名(例如 /blog/article/comment.php),这样可能会更容易理解。

在这里创建一个Blog 空间,使用非限定名称,表示当前Blog空间,实例化以后这个调用将被解析。使用限定名称,表示相对于Blog空间,实例化以后这个调用将被解析成 Blog\Article\Comment(),注意类前面没有反斜线。使用完全限定名称,表示绝对于Blog空间,实例化以后这个调用将被解析,注意类前面有反斜线和没有反斜线区别。
注:访问公共空间,文件里没有namespace关键字,则通过“\元素”访问公共空间元素

8、两种方式实例化功能类对象
①完全限定名称 $obj = new \Think\Verify();
②空间类元素引入 use Think\Verify; $obj = new Verify();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值