ThinkPHP

1.ThinkPHP

  按照MVC模式开发的一个框架,也叫TP框架。

优点:

  1. 快速,稳定的搭建系统程序
  2. 可以使开发人员精力集中在业务逻辑上,不需要关心程序的底层架构
  3. 可以节省大量的代码,后期的升级、维护、优化十分方便
  4. 有利于团队的代码风格统一。

 

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. 1.         控制器存放在Controller文件夹中
  2. 2.         命名规范:控制器的名称+Controller.class.php
  3. 3.         类名和文件的名称要一致
  4. 4.         类名用帕斯卡命名法
  5. 5.         尽量区分大小写,windows不区分大小写,但Linux中区分
  6. 6.         ThinkPHP默认的编码是UTF-8的。
  7. 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语句

   

 

posted @ 2017-05-05 10:24  Bryan-S  阅读(1188)  评论(0)    收藏  举报