您的位置:首页 > 编程语言 > PHP开发

thinkphp3.2学习备忘录

2018-03-07 16:12 190 查看

序言

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

一、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()this−>display()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′,this−>assign(′io′,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(元素(下标=>元素值)元素(下标=>元素值)…)数组=array(元素(下标=>元素值)元素(下标=>元素值)…)model(普通对象)->add(数组);

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

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

②改:Model->save()

与add添加一致。

但要注意,如果只修改一个,需要加入主键id作为修改标识。

修改多个,就需要model->where(条件)->save();

③删:Model->delete()

model−>where()−>delete()或者model−>where()−>delete()或者model->delete(id);//其中id为主键

5、执行原生sql语句

$sql="insert select update delete ......";
①查询语句:$model 对象->query($sql);
②添加/修改/删除语句:$model 对象 ->execute($sql);


6、表单自动验证

①通过model−>create();方法收集表单信息,该方法同时具备表单自动验证功能,其还具有非法字段过滤功能。②验证规则在model模型类中修改model−>create();方法收集表单信息,该方法同时具备表单自动验证功能,其还具有非法字段过滤功能。②验证规则在model模型类中修改_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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp