ThinkPHP小结2

一:视图

1.模板内容获取方法

Display方法:$this -> display(); 展示模版

Fetch方法:$this -> fetch(); 获取模版(有返回值)

将Fetch echo输出就是Display了

打印方法:dump()

语法格式:dump(需要打印的变量);              封装在系统的函数库文件functions.php

2.视图中的注释

html中的注释方法:<!—注释内容-->

在ThinkPHP中的模版注释:

行注释:{//行注释内容}

块注释:{/*块注释内容*/}

区别:普通的html注释属于客户端注释,会在浏览器的源代码中输出;而ThinkPHP中的模版注释则属于服务器端的注释,不会被浏览器输出。

注意: 行注释不要当作块注释来写(横跨多行), 在行注释和块注释当中(大括号里面)不要再出现大括号(模版变量)。

3.变量的输出

在ThinkPHP中变量的分配(不考虑变量类型)都是使用assign语法格式:

$this -> assign(‘模版中的变量’,php中变量);

4.数组的输出

关于数组在模版中输出的语法格式:

支持中括号形式:{$array[key]}

支持点形式:{$array.key}

在二维数组中:点形式和中括号形式,同样适用

5.对象变量

在php中输出一个对象的属性:可以通过$obj -> attr/$obj :: attr这种形式输出对象的属性。

在ThinkPHP的模版中输出属性的值,可以通过下面的两种方式来实现:

支持箭头形式:{$obj -> attr}

支持冒号形式:{$obj : attr}

注意: ThinkPHP模版中,在输出对象的属性的时候,千万不要使用点形式,因为ThinkPHP不允许将对象作为数组使用,会报错!

6.系统变量

在ThinkPHP中系统提供了以下几个系统级别的变量(超全局变量在模版中的使用):

• $Think.server 等价于$_SERVER,获取服务器的相关信息

• $Think.get等价于$_GET,获取get请求的信息

• $Think.post 等价于$_POST,获取post请求中的信息

• $Think.request 等价于$_REQUEST,获取getpost中信息

• $Think.cookie等价于$_COOKIE,获取cookie中的信息

• $Think.session等价于$_SESSION,获取session中的信息

• $Think.config获取ThinkPHP中所有配置文件的一个总和,如果后面指定了元素,则获取指定的配置

上述7个系统变量的语法都是一样的,在模版中使用的语法格式是:

{$Think.xxx.具体的元素下标}


7.视图中使用函数

在实际开发的时候,有些变量在模版中不能直接使用。例:在数据表中存储的时间一般都是时间戳格式,在展示的时候需要处理格式化,这个时候可以使用视图中使用函数的方式来解决这个问题。

语法格式:

{$变量|函数名1|函数名2=参数1,参数2,###…}

参数说明:

$变量:模版变量

|:变量修饰符

函数名1:表示需要使用的第一个函数

函数名2:表示需要使用的第二个函数

参数1、参数2:函数2的参数

=:其实就是表示该函数有参数,类似于php中的函数名后面的()

###:表示变量的自身


例:{$time|date='Y-m-s H:i:s',###}

注意:当需要使用的函数只有一个参数并且参数是变量自身的时候,###可以省略不写;当需要使用的函数有多个参数,但是其第一个参数是变量自身的时候,也可以省略不写###


8.默认值

默认值:就是当某个变量不存在或者为空的时候,就会显示默认的字符,默认的字符就是变量的默认值。

语法:

{$变量名|default=默认值}   集合视图中使用函数的语法格式,可以得知default其实是ThinkPHP中封装的一个函数,默认值是函数的参数


9.运算符

在ThinkPHP中同样支持在模版中对变量进行运算:

• +{$a+$b}计算变量a加上变量b的结果

• -{$a-$b}计算变量a减去变量b的结果

• *{$a*$b}计算变量a乘以变量b的结果

• /{$a/$b}计算变量a除以变量b的结果

• %{$a%$b}计算变量a除以变量b的余数

• ++ {$a++} {++$a} 自增运算

• -- {$a--}   {--$a} 自减运算


10.文件包含

在实际开发的时候一般情况会把网站的公共部分,如头部、尾部等部分可以单独的存放到一个文件中,在后期的时候可以直接引入该部分,在后期维护的时候只需要维护一份代码就可以;如果说首尾等公共部分不单独拿出来,会造成2个问题,一个是代码重复,再者就是在后期维护的时候很麻烦。

在ThinkPHP中系统提供了一个模版标签,可以让我们引入一些公共部分的代码文件,这个标签是include标签:

语法: <include file=’需要引入的模版文件’ />

说明:路径可以是相对路径,但是相对于入口文件的。还可以写成简便写法:

<include file=’View目录名/模版文件名’ />  注:模板文件名不加后缀

除了使用include标签来引入文件之外,include标签还有另外一个用法:用来传递参数给引入的模版文件。

<include file=’需要引入的模版文件参数名=参数值’ />

上述的语法格式是给引入文件传递一个参数,参数名的名字就是后面的参数名,值就是后面的值。


11.循环遍历

在ThinkPHP中系统提供了2个标签来实现数组在模版中的遍历:

volist标签、foreach标签。

区别:volist除了上述的name和id属性对之外,还支持更多的属性对,如mod、key、length等等,而foreach标签除了上述的name和item之外只支持key属性对。可以理解成foreach标签是volist标签的一个简化版本。

具体使用可以查看手册:手册非常全面,甚至可以用来调错。


12.if标签

在ThinkPHP中if标签也是用于流程控制的。

If标签的语法格式

<if condition=’条件表达式’>

输出结果1

<elseif condition=’条件表达式2’/>      注意此处的"/",不要遗忘,会报错

输出结果2

<elseif condition=’条件表达式3’/>      注意此处的"/",不要遗忘,会报错

<else/>

最后一个输出

</if>


13.php标签

Php标签就是指在模版中使用php语法格式。

模版中的php标签ThinkPHP支持2种形式:

第一种:PHP内置的php标签;语法格式:<?php PHP代码段?>

第二种:ThinkPHP封装的php标签;语法格式:<php>PHP代码段</php>

在实际开发的时候一般情况不建议在模版中使用php标签,在配置项中有一个配置项可以禁用php标签,配置项叫做:TMPL_DENY_PHP 

禁用php标签之后,只是禁用掉原始的php标签,并不会禁用ThinkPHP封装的php标签。但是不建议禁用,原因是系统的跳转方法的模版文件使用了原生的php标签。


二:模型

1.配置数据库连接

注意:不要在主配置文件里配置数据库的连接信息,最好在应用级别的配置文件中配置数据库,一般一个应用使用一个数据库。

2.模型的创建

命名规范:模型名(要求是不带前缀的表名并且首字母大写)+Model关键词+.class.php

代码结构规范:

第一步:声明命名空间;

第二步:引入父类模型Model.class.php;

第三步:声明模型并且继承父类模型;

注意: 空模型也能进行数据表的基本操作( CURD ), 因为模型继承了父类,所以可以执行基本的操作。

3.普通实例化方法

普通实例化方法是指通过自己编写代码来new一个对象。

$obj = new 类名();

 在控制器中定义一个方法来实例化模型,使用的是普通方式实例化。

4.快速实例化方法

ThinkPHP为了简单、快速、高效开发,为我们提供了2个快速方法可以对模型进行实例化操作:

M方法和D方法。

D方法实例化:

$obj = D([‘模型名’]);

表达的含义:实例化我们自己创建的模型(分组/Model目录中);如果传递了模型名,则实例化指定的模型,如果没有指定或者模型名不存在,则直接实例化父类模型(Model.class.php)

 

M方法实例化:

$obj = M([‘不带前缀的表名’]);

表达的含义:直接实例化父类模型(Think目录下的Model.class.php);如果指定了表名,则实例化父类模型的时候关联指定的表;如果没有指定表名(没有传递参数)则不关联表,一般用于执行原生的sql语句(M() -> query(原生的sql语句))。


区别:D方法是实例化自定义模型,如果自定义模型不存在,则实例化父类模型;M方法本身就是直接实例化父类模型。两者的差异就是实例化的对象不一样。

具体使用:如果需要使用的操作父类中已经封装好了,则可以直接实例化父类(使用M方法),如果父类中方法不能满足我们的开发需要求,需要自己定义方法,则这个时候可以使用D方法实例化自定义模型。


5.CURD操作

5.1增

在ThinkPHP中系统给我们封装好了模型中的方法,可以通过方法来实现数据的增加操作,这个方法叫做add方法:

$model -> add(一维数组);

一维数组要求必须是键值(关联)数组,键必须和数据表中字段名要匹配,如果不匹配则在增加的时候会被ThinkPHP过滤掉。

 

Add方法的返回值是新增记录的主键id。


补充:如果需要添加多个记录怎么去实现呢?

方法1:可以循环使用add方法;

方法2:可以使用另外一个方法addAll,语法:$model -> addAll(二维数组);

要求:最里面的那层数组也是关联数组(也要求键名字和数据表字段匹配),外层数组必须是下标从0开始的连续索引数组。 

注:addAll方法使用起来需要注意的点太多,谨慎使用。


5.2修改

在ThinkPHP中使用的是save方法,语法格式:

$model -> save(一维关联数组);

条件需要一维关联数组必须要有主键信息。如果没有主键信息,则相当于批量修改,在ThinkPHP中,系统为了防止误操作,不允许批量修改。


5.3查询

在ThinkPHP中系统封装了方法可以直接用于查询:select方法、find方法。

Select方法语法:

$model -> select();表示查询全部的信息

$model -> select(id); 表示查询指定id的信息     //一般不使用

$model -> select(‘id1,id2,id3,id4….’);表示查询指定id集合的信息,等价于mysql中in语句

 

Find方法语法:

$model -> find(); 表示查询当前表中的第一条记录,相当于limit 1;

$model -> find(id);表示查询表中的指定id的记录;

 

返回值:

Select方法返回值是一个二维数组,即时查询的是一条记录返回也是二维数组;find返回值是一维数组。


5.4删除操作

在ThinkPHP中可以使用系统封装的方法delete方法:

$model -> delete();   //不能使用,删除方法必须要有条件,不能执行没有条件的删除

$model -> delete(id); 删除指定id对应的记录

$model -> delete(‘id1,id2,id3….’); 删除多个id对应的记录


关于删除的说明:

删除分为两种删除:物理删除、逻辑删除。

物理删除:是指真删除,是从数据库里彻底删除。

逻辑删除:是指假删除,本质是修改操作。在数据表中定义一个状态字段,比如说status,取值是0或者1,在查询的时候读取状态是1的;当用户点击删除之后触发修改操作,将状态从1修改成0。因为查询只查询状态是1的,所以0的就不会被显示在页面上。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值