ThinkPHP
1.ThinkPHP
按照MVC模式开发的一个框架,也叫TP框架。
优点:
- 快速,稳定的搭建系统程序
- 可以使开发人员精力集中在业务逻辑上,不需要关心程序的底层架构
- 可以节省大量的代码,后期的升级、维护、优化十分方便
- 有利于团队的代码风格统一。
2.相关的一些框架
1、zend framework
zend公司开发的官方的框架,功能很强大,重量级框架。
2、Yii
国人自己开发的重量级框架,该框架的特点就是代码的可重用性非常好。
3、CI(code Igniter)
轻量级的框架,
4、cakePHP
外国的PHP开发框架
5、ThinkPHP
这是国人开发的,免费、开源的,简单的、面向对象的,轻量级的PHP框架。
3.ThinkPHP下载


4.ThinkPHP的结构如下:

在ThinkPHP\Library\Think文件夹中,几个重要的文件
1、App.class.php 框架核心类文件
2、Think.class.php 每次请求都要执行的类
3、Controller.class.php 控制器的父类
4、Model.class.php 模型的父类
5、View.class.php 试图的父类
5.搭建ThinkPHP的环境
在站点下新建index.php,代码如下:

运行后出现欢迎界面,在说明系统自动生成了ThinkPHP的项目目录,并写入了初始的控制器和方法。
自动生成的目录如下:

6.创建控制器
- 1. 控制器存放在Controller文件夹中
- 2. 命名规范:控制器的名称+Controller.class.php
- 3. 类名和文件的名称要一致
- 4. 类名用帕斯卡命名法
- 5. 尽量区分大小写,windows不区分大小写,但Linux中区分
- 6. ThinkPHP默认的编码是UTF-8的。
- 7. 如果地址中没有写控制器,这默认调用Index控制器,如果没有写方法,则默认调用index方法
7.命名法:
1、帕斯卡命名法:首字母大写 UserName MyNameIsLiping
2、骆驼命名法:userName _user_name
3、匈牙利命名法:前缀(类别)+名字 radSex txtUsername iIength oStu
8.ThinkPHP的路由

1、普通模式

2、pathinfo模式
http://网址/入口文件(index.php)/分组(平台)/控制器/方法
比如:http://localhost/index.php/home/index/index

3、rewrite()重写模式
4、兼容模式
参数s=/分组/控制器/方法。

ThinkPHP中,默认使用pathinfo模式。
9.定义和调用TP的模板
所有的模板都要放在view文件夹下。
规则:一个控制器对应一个文件夹,一个方法对应一个文件

TP模板的调用

10.TP系统常量

11.项目后台的搭建
1、在Application文件夹下新建一个Admin文件夹,在Admin文件夹中新建Controller和View文件夹。

2、在Admin\Controller控制器中新建一个LoginController.class.php页面,代码如下:

3、在login.html中更改css、js、img的路径

表单提交地址更改
4、在Admin\Controller文件夹中新建ManagerClass.php文件

5、对应的index页面中更改如下:

6、注意更改index、head、left、right页面中的路径
12.模板中常量字符串替换

13.ThinkPHP的开发模式
1.tp框架有两种使用模式:开发模式(调试模式),一种是生产模式(运行模式)
define('APP_DEBUG', true); //调试模式
define('APP_DEBUG', FALSE); //运行模式


运行模式会把很多核心文件代码缓存成" common~runtime.php"文件,把原来每次需要加载许多文件的请求现在只要请求一个缓存文件,节省了很多文件的打开,关闭的开销。
14.在页面的底部显示日志信息
在配置文件中,添加如下配置

配置完成后,在浏览器的右下角会显示如下标记。

如果想看源码的话,在behavior文件夹下的ShowPageTraceBehavior.class.php

把ThinkPHP的引擎改成Smarty

smarty引擎的存放位置

smarty驱动

如果想更改Smarty的配置(一般不要改)

空操作
系统在找不到请求的方法的时候,会定位到__empty()方法处理,利用这个机制,我们可以对用户请求的不存在的所有操作进行统一处理。

空控制器
当系统请求找不到控制器,会定位到空控制器上EmptyController。

跨控制器调用
1、直接实例化

2、A()
A()用来实例化其他控制器的。

3、R()
R()和A()基本一样,唯一不同的是R()函数在实例化控制器的时候把操作方法一起传递过去,省略了方法的调用

TP框架的配置文件
惯例配置:ThinkPHP/conf/convention.php
应用配置:Application/Common/conf/config.php
调试配置:Application/Common/conf/debug.php
模块配置:Application/Home/conf/config.php
加载顺序
惯例配置->应用配置->调试配置->模块配置
优先级:
模块配置>调试配置>应用配置>惯例配置
C('配置的名称') 用来获取配置信息。
判断
<if condition='表达式'>
<elseif condition='表达式' />
<else/>
</if>
表达式中运算符
|
PHP运算符 |
对应的TP中的运算符 |
英文全称 |
|
< |
lt |
Less than |
|
> |
gt |
Greater than |
|
== |
eq |
equal |
|
>= |
egt |
Equal or greater than |
|
<= |
elt |
|

循环


连接数据库

在配置文件中,做如上的配置,即可连接数据库
创建Model模型
把"Home/Model"文件夹剪切到Application文件夹下,让Home和Admin共同使用。
第一种实例化模型的方法

第二种实例化模型的方法

第三种实例化模型的方法

在tp3.2以后,M()和D()是一样的,在3.2之前版本中
M() 类似于是 new Model();
D('goods') 类似于 new GoodsModel():
提示:我们可以看到goods表的信息,在GoodsModel中没有写代码,所有的业务逻辑都是Model类来实现的。
对表的操作
增加:M('表名')->add($data);
删除:M('表名')->delete($id);
更新:M('表名')->save($data);
查询:M('表名')->select();
普通查询(显示所有的商品)
1、GoodsController中的代码如下:

$goods=M('goods')->find(); //获取一条记录
var_dump($goods);
1、查询主键为2的记录
$list=M('goods')->select(2);
2、查询编号是2,3,4,5,6的记录
$list=M('goods')->select("2,3,4,5,6");
3、where条件
$list=M('goods')->where("goods_name like '%诺基亚%'")->select();
$list=M('goods')->where("goods_name like '%诺基亚%' and goods_price>=1000")->select();
4、limit
$list=M('goods')->limit(5)->select();
$list=M('goods')->limit(2,5)->select();
5、where和limit
$list=M('goods')->where('goods_price>1000')->limit(3)->select();
6、排序
$list=M('goods')->order('goods_price desc')->select();
7、查询指定字段
$list=M('goods')->field('goods_name,goods_price')->select();
8、having
$list=M('goods')->having('goods_price>2000')->select();
//分组
$list=M('goods')->group('goods_brand_id')->field('goods_brand_id ,max(goods_price) m')->having('m>2000')->select();
var_dump($list);
having和where的区别
区别一:
where后面跟的字段必须在数据表中有
having后面跟的字段必须在数据集中有
区别二:
select * from 表 where 条件 group by 分组 having 条件
动态查询
getby+字段名

聚合函数

数据添加
1、通过关联数组的方法添加

2、通过AR(active record)方式来添加

数据修改
1、通过关联数组的方法

2、通过AR(active record)方式

数据删除

直接执行SQL语句


浙公网安备 33010602011771号